<!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, "&nbsp;&nbsp;").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>

解决方案 »

  1.   

    这种处理光标位置问题有bug,在ie还是没办法解决,在别的有浏览器下,点击空白的地方再插入图片的时候,会把图片插入到别的地方,而不是div编辑器中
      

  2.   


    你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的
      

  3.   


    你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的
    所有浏览器下这个定位都有问题,鼠标点击别的位置的时候(不在div里面)再点击插入图片按钮,会跨域插入到别的地方,前辈能不能写一个解决光标的例子呢,百度贴吧也是用的div作为编辑器,不知道他怎么实现的
      

  4.   


    你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的前辈有没有办法哦
      

  5.   

    楼主可以考虑用iframe很多在线编辑器都是 iframe.
    鼠标点击别的位置的时候(不在div里面)再点击插入图片按钮,会跨域插入到别的地方你需要在插入前,判断触发事件的源【dom】是否你需要插入的div,或者div 的子节点
      

  6.   


    你还没用这个引用吧!而且发帖注意格式。你用的是IE几啊,这是html5的标签,IE6是不支持的前辈有没有办法哦
    我在谷歌浏览器中可以啊。不过点击查看是一直累加的。
      

  7.   

    前辈给我一个iframe过滤粘贴的或者标签怎么办,能否给我一份?
      

  8.   

    其实光标定位本身没有问题的,主要是你外部那个字符串用了数组join进去
    你试试直接 弄个字符串标签进去相信就在光标后面了,个中原因我也不明白,但某同事上两周就是这样解决了问题
      

  9.   

    可是你是通过数组join合并而成的字符串,用+号运算连接看看
      

  10.   


    前辈写的那个iframe有Bug,在ie下失去焦点之后点击插入图片,总是插入到最前面,火狐下插入图片之后立马失去了焦点,需要再点击编辑器才能插入,insertImg方法参数能不能改成传入一个<img>标签或者是src,去掉插入图片链接那些,只要能插入图片就好
      

  11.   


    哪里呢?前辈贴一下代码
    抱歉没看清楚,你确实直接弄了标签的HTML字符串进去,然后我将你的代码拿来测试,但发现不了问题,因为我的是高级版本的火狐和IE11浏览器....我改天回公司有空再测测
      

  12.   


    哪里呢?前辈贴一下代码
    抱歉没看清楚,你确实直接弄了标签的HTML字符串进去,然后我将你的代码拿来测试,但发现不了问题,因为我的是高级版本的火狐和IE11浏览器....我改天回公司有空再测测有没有这种简单的只插入表情和图片的编辑器,给我一份
      

  13.   


    前辈在不在?您那个iframe有bug
      

  14.   

    说错,不是百度编辑器,是百度的UEditor
      

  15.   


    <!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, "&nbsp;&nbsp;").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>
      

  16.   

    <!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 = _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, "&nbsp;&nbsp;").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>
    上面的没改好 这个应该没问题
      

  17.   


    range.collapse(false);提示53行没有这个方法,前辈再帮忙看一下
      

  18.   


    出现问题就是上来就插入图片,就报这个.collapse是undefine
      

  19.   


    出现问题就是上来就插入图片,就报这个.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)
                }
            }
      

  20.   


    出现问题就是上来就插入图片,就报这个.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下先输入一段文字之后再插入图片,文字没有了,火狐等浏览器下输入一段文字,点击插入图片还是插入在最前面,前辈看一下
      

  21.   


    出现问题就是上来就插入图片,就报这个.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的好了 火狐的调试模式走下去是好的 不调试就不行了 我在看看
      

  22.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下在有图片的时候光标不能选择位置,一直是在最前面,通过键盘左右键调节的时候,最多调节到最后一张图片的前面,大神看看这是怎么回事呢,ie8下测试的
      

  23.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下在有图片的时候光标不能选择位置,一直是在最前面,通过键盘左右键调节的时候,最多调节到最后一张图片的前面,大神看看这是怎么回事呢,ie8下测试的
    百度帖吧最后追加了 空文本节点
    不知道怎么加上去的
      

  24.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下在有图片的时候光标不能选择位置,一直是在最前面,通过键盘左右键调节的时候,最多调节到最后一张图片的前面,大神看看这是怎么回事呢,ie8下测试的
    百度帖吧最后追加了 空文本节点
    不知道怎么加上去的是不是在把img标签后面拼上去的呢
      

  25.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下在有图片的时候光标不能选择位置,一直是在最前面,通过键盘左右键调节的时候,最多调节到最后一张图片的前面,大神看看这是怎么回事呢,ie8下测试的
    百度帖吧最后追加了 空文本节点
    不知道怎么加上去的我在传入的这个"<img></img> "标签后面加上一个空格怎么样?
      

  26.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下如果最后一个是图片,焦点老是到不了他的后面,总是在他的前面
    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"));
                    }
                }
            }
      

  27.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下如果最后一个是图片,焦点老是到不了他的后面,总是在他的前面
    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分都给你了,十分感谢
      

  28.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下如果最后一个是图片,焦点老是到不了他的后面,总是在他的前面
    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会把所有图片清掉
      

  29.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下如果最后一个是图片,焦点老是到不了他的后面,总是在他的前面
    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, "&nbsp;&nbsp;")
                    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>");
    加注释的部分会把都有标签去掉
      

  30.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下如果最后一个是图片,焦点老是到不了他的后面,总是在他的前面
    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, "&nbsp;&nbsp;")
                    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>");
    加注释的部分会把都有标签去掉去掉注释的话,会把他的代码也粘贴过来,这样就起不到过滤效果了,大神有什么办法过滤粘贴过来的呢?
      

  31.   

    火狐上图片是加上去了 没显示 看看能不能调样式调出来图片存在的时候能显示出来ie下如果最后一个是图片,焦点老是到不了他的后面,总是在他的前面
    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, "&nbsp;&nbsp;")
                    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)
            }
      

  32.   


    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对象
      

  33.   

    <div style="width:100px;height:100px;background:red;"></div>