<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js
"></script>
<style>
p{ margin:0; padding:0;}
img{ outline:none;}
#o{ width:300px!important; height:auto!important; border:1px solid #333;
overflow-x: hidden;word-wrap: break-word;outline:0px; min-height:220px;}
</style>
<script>
$(function(){
$('#btn').click(function(){
$('#o').focus();
var str="<img src='img1/1.png' width='191' height='259' />";
//$(str).appendTo($('#o'));
_insertimg(str);
});
$('#t').click(function(){
$('#div1').html($('#o').html());
});
$('#ttbtn').click(function(){
alert($('#tt').val());
});
$("#img").click(function(){
});
});
//锁定编辑器中鼠标光标位置。。
function _insertimg(str){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
if (!window.getSelection){
document.getElementById('o').focus();
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.pasteHTML(str);
range.collapse(false);
range.select();
}else{
document.getElementById('o').focus();
range.collapse(false);
var hasR = range.createContextualFragment(str);
var hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
var e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e)
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild)
}
selection.removeAllRanges();
selection.addRange(range)
}
}
//监控粘贴(ctrl+v),如果是粘贴过来的东东,则替换多余的html代码,只保留<br>
function pasteHandler(){
setTimeout(function(){
var content = document.getElementById("o").innerHTML;
valiHTML=["br"];
content=content.replace(/_moz_dirty=""/gi, "").replace(/\[/g, "[[-").replace(/\]/g, "-]]").replace(/<\/ ?tr[^>]*>/gi, "[br]").replace(/<\/ ?td[^>]*>/gi, " ").replace(/<(ul|dl|ol)[^>]*>/gi, "[br]").replace(/<(li|dd)[^>]*>/gi, "[br]").replace(/<p [^>]*>/gi, "[br]").replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]").replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]").replace(/<[^>]*>/g, "").replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]").replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
if(!/firefox/.test(navigator.userAgent.toLowerCase())){
content=content.replace(/\r?\n/gi, "<br>");
}
document.getElementById("o").innerHTML=content;
},1)
}
</script>
</head><body>
<div id="o" contenteditable="true"></div>
<input type="button" value="查看" id="btn"/>
<div id="div1"></div>
<textarea id="tt" style="width:200px; height:200px;"></textarea>
<input type="button" id="ttbtn" / value="测试"></body>
<script type="text/javascript">
var edt = document.getElementById("o");
if(edt.addEventListener){
edt.addEventListener("paste",pasteHandler,false);
}else{
edt.attachEvent("onpaste",pasteHandler);
}
</script>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js
"></script>
<style>
p{ margin:0; padding:0;}
img{ outline:none;}
#o{ width:300px!important; height:auto!important; border:1px solid #333;
overflow-x: hidden;word-wrap: break-word;outline:0px; min-height:220px;}
</style>
<script>
$(function(){
$('#btn').click(function(){
$('#o').focus();
var str="<img src='img1/1.png' width='191' height='259' />";
//$(str).appendTo($('#o'));
_insertimg(str);
});
$('#t').click(function(){
$('#div1').html($('#o').html());
});
$('#ttbtn').click(function(){
alert($('#tt').val());
});
$("#img").click(function(){
});
});
//锁定编辑器中鼠标光标位置。。
function _insertimg(str){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
if (!window.getSelection){
document.getElementById('o').focus();
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.pasteHTML(str);
range.collapse(false);
range.select();
}else{
document.getElementById('o').focus();
range.collapse(false);
var hasR = range.createContextualFragment(str);
var hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
var e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e)
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild)
}
selection.removeAllRanges();
selection.addRange(range)
}
}
//监控粘贴(ctrl+v),如果是粘贴过来的东东,则替换多余的html代码,只保留<br>
function pasteHandler(){
setTimeout(function(){
var content = document.getElementById("o").innerHTML;
valiHTML=["br"];
content=content.replace(/_moz_dirty=""/gi, "").replace(/\[/g, "[[-").replace(/\]/g, "-]]").replace(/<\/ ?tr[^>]*>/gi, "[br]").replace(/<\/ ?td[^>]*>/gi, " ").replace(/<(ul|dl|ol)[^>]*>/gi, "[br]").replace(/<(li|dd)[^>]*>/gi, "[br]").replace(/<p [^>]*>/gi, "[br]").replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]").replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]").replace(/<[^>]*>/g, "").replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]").replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
if(!/firefox/.test(navigator.userAgent.toLowerCase())){
content=content.replace(/\r?\n/gi, "<br>");
}
document.getElementById("o").innerHTML=content;
},1)
}
</script>
</head><body>
<div id="o" contenteditable="true"></div>
<input type="button" value="查看" id="btn"/>
<div id="div1"></div>
<textarea id="tt" style="width:200px; height:200px;"></textarea>
<input type="button" id="ttbtn" / value="测试"></body>
<script type="text/javascript">
var edt = document.getElementById("o");
if(edt.addEventListener){
edt.addEventListener("paste",pasteHandler,false);
}else{
edt.attachEvent("onpaste",pasteHandler);
}
</script>
</body>
</html>
你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的
你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的
所有浏览器下这个定位都有问题,鼠标点击别的位置的时候(不在div里面)再点击插入图片按钮,会跨域插入到别的地方,前辈能不能写一个解决光标的例子呢,百度贴吧也是用的div作为编辑器,不知道他怎么实现的
你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的前辈有没有办法哦
鼠标点击别的位置的时候(不在div里面)再点击插入图片按钮,会跨域插入到别的地方你需要在插入前,判断触发事件的源【dom】是否你需要插入的div,或者div 的子节点
你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的前辈有没有办法哦
我在谷歌浏览器中可以啊。不过点击查看是一直累加的。
你试试直接 弄个字符串标签进去相信就在光标后面了,个中原因我也不明白,但某同事上两周就是这样解决了问题
前辈写的那个iframe有Bug,在ie下失去焦点之后点击插入图片,总是插入到最前面,火狐下插入图片之后立马失去了焦点,需要再点击编辑器才能插入,insertImg方法参数能不能改成传入一个<img>标签或者是src,去掉插入图片链接那些,只要能插入图片就好
哪里呢?前辈贴一下代码
抱歉没看清楚,你确实直接弄了标签的HTML字符串进去,然后我将你的代码拿来测试,但发现不了问题,因为我的是高级版本的火狐和IE11浏览器....我改天回公司有空再测测
哪里呢?前辈贴一下代码
抱歉没看清楚,你确实直接弄了标签的HTML字符串进去,然后我将你的代码拿来测试,但发现不了问题,因为我的是高级版本的火狐和IE11浏览器....我改天回公司有空再测测有没有这种简单的只插入表情和图片的编辑器,给我一份
前辈在不在?您那个iframe有bug
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js
"></script>
<style>
p{ margin:0; padding:0;}
img{ outline:none;}
#o{ width:300px!important; height:auto!important; border:1px solid #333;
overflow-x: hidden;word-wrap: break-word;outline:0px; min-height:220px;}
</style>
<script>
$(function(){
$('#btn').click(function(){
$('#o').focus();
var str="<img src='img1/1.png' width='191' height='259' />";
//$(str).appendTo($('#o'));
_insertimg(str);
});
$('#t').click(function(){ $('#div1').html($('#o').html());
}); $('#ttbtn').click(function(){
alert($('#tt').val());
});
$("#img").click(function(){ });
$("#o").bind({
mouseup:saveRange,
change:saveRange
})
});
var _range;
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
}
//锁定编辑器中鼠标光标位置。。
function _insertimg(str){ if (!window.getSelection){
document.getElementById('o').focus();
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.pasteHTML(str);
range.collapse(false);
range.select();
}else{
document.getElementById('o').focus();
var selection= window.getSelection ? window.getSelection() : document.selection;
selection.addRange(_range);
range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.collapse(false);
var hasR = range.createContextualFragment(str);
var hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
var e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e)
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild)
}
selection.removeAllRanges();
selection.addRange(range)
}
}
//监控粘贴(ctrl+v),如果是粘贴过来的东东,则替换多余的html代码,只保留<br>
function pasteHandler(){
setTimeout(function(){
var content = document.getElementById("o").innerHTML;
valiHTML=["br"];
content=content.replace(/_moz_dirty=""/gi, "").replace(/\[/g, "[[-").replace(/\]/g, "-]]").replace(/<\/ ?tr[^>]*>/gi, "[br]").replace(/<\/ ?td[^>]*>/gi, " ").replace(/<(ul|dl|ol)[^>]*>/gi, "[br]").replace(/<(li|dd)[^>]*>/gi, "[br]").replace(/<p [^>]*>/gi, "[br]").replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]").replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]").replace(/<[^>]*>/g, "").replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]").replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
if(!/firefox/.test(navigator.userAgent.toLowerCase())){
content=content.replace(/\r?\n/gi, "<br>");
}
document.getElementById("o").innerHTML=content;
},1) }
</script>
</head><body>
<div id="o" contenteditable="true" onblur="blur(this);"></div>
<input type="button" value="查看" id="btn"/>
<div id="div1"></div>
<textarea id="tt" style="width:200px; height:200px;"></textarea>
<input type="button" id="ttbtn" value="测试"></body>
<script type="text/javascript">
var edt = document.getElementById("o");
if(edt.addEventListener){
edt.addEventListener("paste",pasteHandler,false);
}else{
edt.attachEvent("onpaste",pasteHandler);
}
</script>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery.js
"></script>
<style>
p{ margin:0; padding:0;}
img{ outline:none;}
#o{ width:300px!important; height:auto!important; border:1px solid #333;
overflow-x: hidden;word-wrap: break-word;outline:0px; min-height:220px;}
</style>
<script>
$(function(){
$('#btn').click(function(){
$('#o').focus();
var str="<img src='img1/1.png' width='191' height='259' />";
//$(str).appendTo($('#o'));
_insertimg(str);
});
$('#t').click(function(){ $('#div1').html($('#o').html());
}); $('#ttbtn').click(function(){
alert($('#tt').val());
});
$("#img").click(function(){ });
$("#o").bind({
mouseup:saveRange,
change:saveRange
})
});
var _range;
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
}
//锁定编辑器中鼠标光标位置。。
function _insertimg(str){ if (!window.getSelection){
document.getElementById('o').focus();
// var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.pasteHTML(str);
range.collapse(false);
range.select();
}else{
document.getElementById('o').focus();
var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.collapse(false);
var hasR = range.createContextualFragment(str);
var hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
var e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e)
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild)
}
selection.removeAllRanges();
selection.addRange(range)
}
}
//监控粘贴(ctrl+v),如果是粘贴过来的东东,则替换多余的html代码,只保留<br>
function pasteHandler(){
setTimeout(function(){
var content = document.getElementById("o").innerHTML;
valiHTML=["br"];
content=content.replace(/_moz_dirty=""/gi, "").replace(/\[/g, "[[-").replace(/\]/g, "-]]").replace(/<\/ ?tr[^>]*>/gi, "[br]").replace(/<\/ ?td[^>]*>/gi, " ").replace(/<(ul|dl|ol)[^>]*>/gi, "[br]").replace(/<(li|dd)[^>]*>/gi, "[br]").replace(/<p [^>]*>/gi, "[br]").replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]").replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]").replace(/<[^>]*>/g, "").replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]").replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
if(!/firefox/.test(navigator.userAgent.toLowerCase())){
content=content.replace(/\r?\n/gi, "<br>");
}
document.getElementById("o").innerHTML=content;
},1) }
</script>
</head><body>
<div id="o" contenteditable="true" onblur="blur(this);"></div>
<input type="button" value="查看" id="btn"/>
<div id="div1"></div>
<textarea id="tt" style="width:200px; height:200px;"></textarea>
<input type="button" id="ttbtn" value="测试"></body>
<script type="text/javascript">
var edt = document.getElementById("o");
if(edt.addEventListener){
edt.addEventListener("paste",pasteHandler,false);
}else{
edt.attachEvent("onpaste",pasteHandler);
}
</script>
</body>
</html>
上面的没改好 这个应该没问题
range.collapse(false);提示53行没有这个方法,前辈再帮忙看一下
出现问题就是上来就插入图片,就报这个.collapse是undefine
出现问题就是上来就插入图片,就报这个.collapse是undefine
//锁定编辑器中鼠标光标位置。。
function _insertimg(str){
document.getElementById('o').focus();
if(!_range){
saveRange();
}
if (!window.getSelection){
// var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.pasteHTML(str);
range.collapse(false);
range.select();
}else{
var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.collapse(false);
var hasR = range.createContextualFragment(str);
var hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
var e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e)
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild)
}
selection.removeAllRanges();
selection.addRange(range)
}
}
出现问题就是上来就插入图片,就报这个.collapse是undefine
//锁定编辑器中鼠标光标位置。。
function _insertimg(str){
document.getElementById('o').focus();
if(!_range){
saveRange();
}
if (!window.getSelection){
// var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.pasteHTML(str);
range.collapse(false);
range.select();
}else{
var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.collapse(false);
var hasR = range.createContextualFragment(str);
var hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
var e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e)
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild)
}
selection.removeAllRanges();
selection.addRange(range)
}
}
ie下先输入一段文字之后再插入图片,文字没有了,火狐等浏览器下输入一段文字,点击插入图片还是插入在最前面,前辈看一下
出现问题就是上来就插入图片,就报这个.collapse是undefine
//锁定编辑器中鼠标光标位置。。
function _insertimg(str){
document.getElementById('o').focus();
if(!_range){
saveRange();
}
if (!window.getSelection){
// var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.pasteHTML(str);
range.collapse(false);
range.select();
}else{
var selection= window.getSelection ? window.getSelection() : document.selection;
var range = _range;
// var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
range.collapse(false);
var hasR = range.createContextualFragment(str);
var hasR_lastChild = hasR.lastChild;
while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {
var e = hasR_lastChild;
hasR_lastChild = hasR_lastChild.previousSibling;
hasR.removeChild(e)
}
range.insertNode(hasR);
if (hasR_lastChild) {
range.setEndAfter(hasR_lastChild);
range.setStartAfter(hasR_lastChild)
}
selection.removeAllRanges();
selection.addRange(range)
}
}
ie下先输入一段文字之后再插入图片,文字没有了,火狐等浏览器下输入一段文字,点击插入图片还是插入在最前面,前辈看一下
$("#o").bind({
mouseup:saveRange,
// change:saveRange,
keyup:saveRange
})
改下这个ie的好了 火狐的调试模式走下去是好的 不调试就不行了 我在看看
百度帖吧最后追加了 空文本节点
不知道怎么加上去的
百度帖吧最后追加了 空文本节点
不知道怎么加上去的是不是在把img标签后面拼上去的呢
百度帖吧最后追加了 空文本节点
不知道怎么加上去的我在传入的这个"<img></img> "标签后面加上一个空格怎么样?
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
if (!window.getSelection){
var o = document.getElementById('o');
if(o.lastChild && o.lastChild.tagName == "IMG"){
o.appendChild(document.createTextNode("\n"));
}
}
}
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
if (!window.getSelection){
var o = document.getElementById('o');
if(o.lastChild && o.lastChild.tagName == "IMG"){
o.appendChild(document.createTextNode("\n"));
}
}
}
麻烦大神帮我看一下,我在别的网页随便粘贴的时候,复制到我的比编辑器里面,我以前的文本就没有了,麻烦大神帮我解决一下哦,解决完了这个问题就ok了,200分都给你了,十分感谢
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
if (!window.getSelection){
var o = document.getElementById('o');
if(o.lastChild && o.lastChild.tagName == "IMG"){
o.appendChild(document.createTextNode("\n"));
}
}
}
麻烦大神帮我看一下,我在别的网页随便粘贴的时候,复制到我的比编辑器里面,我以前的文本就没有了,麻烦大神帮我解决一下哦,解决完了这个问题就ok了,200分都给你了,十分感谢
pasteHandler会把所有图片清掉
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
if (!window.getSelection){
var o = document.getElementById('o');
if(o.lastChild && o.lastChild.tagName == "IMG"){
o.appendChild(document.createTextNode("\n"));
}
}
}
麻烦大神帮我看一下,我在别的网页随便粘贴的时候,复制到我的比编辑器里面,我以前的文本就没有了,麻烦大神帮我解决一下哦,解决完了这个问题就ok了,200分都给你了,十分感谢
pasteHandler会把所有图片清掉content=content.replace(/_moz_dirty=""/gi, "")
content=content.replace(/\[/g, "[[-")
content=content.replace(/\]/g, "-]]")
content=content.replace(/<\/ ?tr[^>]*>/gi, "[br]")
content=content.replace(/<\/ ?td[^>]*>/gi, " ")
content=content.replace(/<(ul|dl|ol)[^>]*>/gi, "[br]")
content=content.replace(/<(li|dd)[^>]*>/gi, "[br]")
content=content.replace(/<p [^>]*>/gi, "[br]")
content=content.replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]")
content=content.replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]")
// content=content.replace(/<[^>]*>/g, "")
content=content.replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]");
content=content.replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
加注释的部分会把都有标签去掉
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
if (!window.getSelection){
var o = document.getElementById('o');
if(o.lastChild && o.lastChild.tagName == "IMG"){
o.appendChild(document.createTextNode("\n"));
}
}
}
麻烦大神帮我看一下,我在别的网页随便粘贴的时候,复制到我的比编辑器里面,我以前的文本就没有了,麻烦大神帮我解决一下哦,解决完了这个问题就ok了,200分都给你了,十分感谢
pasteHandler会把所有图片清掉content=content.replace(/_moz_dirty=""/gi, "")
content=content.replace(/\[/g, "[[-")
content=content.replace(/\]/g, "-]]")
content=content.replace(/<\/ ?tr[^>]*>/gi, "[br]")
content=content.replace(/<\/ ?td[^>]*>/gi, " ")
content=content.replace(/<(ul|dl|ol)[^>]*>/gi, "[br]")
content=content.replace(/<(li|dd)[^>]*>/gi, "[br]")
content=content.replace(/<p [^>]*>/gi, "[br]")
content=content.replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]")
content=content.replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]")
// content=content.replace(/<[^>]*>/g, "")
content=content.replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]");
content=content.replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
加注释的部分会把都有标签去掉去掉注释的话,会把他的代码也粘贴过来,这样就起不到过滤效果了,大神有什么办法过滤粘贴过来的呢?
function saveRange(){
var selection= window.getSelection ? window.getSelection() : document.selection;
var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);
_range = range;
if (!window.getSelection){
var o = document.getElementById('o');
if(o.lastChild && o.lastChild.tagName == "IMG"){
o.appendChild(document.createTextNode("\n"));
}
}
}
麻烦大神帮我看一下,我在别的网页随便粘贴的时候,复制到我的比编辑器里面,我以前的文本就没有了,麻烦大神帮我解决一下哦,解决完了这个问题就ok了,200分都给你了,十分感谢
pasteHandler会把所有图片清掉content=content.replace(/_moz_dirty=""/gi, "")
content=content.replace(/\[/g, "[[-")
content=content.replace(/\]/g, "-]]")
content=content.replace(/<\/ ?tr[^>]*>/gi, "[br]")
content=content.replace(/<\/ ?td[^>]*>/gi, " ")
content=content.replace(/<(ul|dl|ol)[^>]*>/gi, "[br]")
content=content.replace(/<(li|dd)[^>]*>/gi, "[br]")
content=content.replace(/<p [^>]*>/gi, "[br]")
content=content.replace(new RegExp("<(/?(?:" + valiHTML.join("|") + ")[^>]*)>", "gi"), "[$1]")
content=content.replace(new RegExp('<span([^>]*class="?at"?[^>]*)>', "gi"), "[span$1]")
// content=content.replace(/<[^>]*>/g, "")
content=content.replace(/\[\[\-/g, "[").replace(/\-\]\]/g, "]");
content=content.replace(new RegExp("\\[(/?(?:" + valiHTML.join("|") + "|img|span)[^\\]]*)\\]", "gi"), "<$1>");
加注释的部分会把都有标签去掉去掉注释的话,会把他的代码也粘贴过来,这样就起不到过滤效果了,大神有什么办法过滤粘贴过来的呢?
//监控粘贴(ctrl+v),如果是粘贴过来的东东,则替换多余的html代码,只保留<br>
function pasteHandler(event){
setTimeout(function(){
var content = document.getElementById("o").innerHTML;
valiHTML=["br"];
content = content.replace(/(<[^>]*>)/g,function($0,$1){
if(/<img[^>]*>/gi.test($1)){
return $1;
}else {
return "";
}
});
if(!/firefox/.test(navigator.userAgent.toLowerCase())){
content=content.replace(/\r?\n/gi, "<br>");
}
document.getElementById("o").innerHTML=content;
saveRange();
},1)
}
function set_focus(el)
{
el=el[0]; // jquery 对象转dom对象
el.focus();
if($.browser.msie)
{
var rng;
el.focus();
rng = document.selection.createRange();
rng.moveStart('character', -el.innerText.length);
var text = rng.text;
for (var i = 0; i < el.innerText.length; i++) {
if (el.innerText.substring(0, i + 1) == text.substring(text.length - i - 1, text.length)) {
result = i + 1;
}
}
}
else
{
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
}
这个方法可以让光标定到最后,参数是目标jquey对象