range = frame[0].contentWindow.document.selection.createRange();
        //FF是frame[0].contentWindow.getSelection().getRangeAt(0)
IE使用pasteHTML后,没法重新选定,FF也不知道如何重var html = "<span>aaa</span>";
///------IE代码
range.pasteHTML(html);
range.select();//-----FF代码
html = range.createContextualFragment(html);
range.deleteContents()
range.insertNode(html);
range.select();两个游览器下select()都无法重新选定替换后的内容,求高人解决,分还可以加

解决方案 »

  1.   

    我做的一个例子,适合IE,你看看,时间来不及,我得先出去了,具体思路是自己维护一个全局的guid,每一个插入的span都有自己的guid,接着根据guid选择这个元素,然后把范围移动到这。 我的例子简单的用了class判断。<script type='text/javascript'>window.onload = function(){
      var html = '<span style="background:yellow" class="myspan">bbbbb</span>';
       document.getElementById('l').onclick = function(){
        /*IE*/
        range = document.selection.createRange();
       
        range.pasteHTML(html);
        var pElem = range.parentElement();
            chElems = pElem.getElementsByTagName('span');
            
        for(var i = 0, len = chElems.length; i < len; ++i){
        if(chElems[i].className === 'myspan'){
        break;
        }
        }
        var brange  = document.body.createTextRange();
        brange.moveToElementText(chElems[i]);  
        brange.select();  
       
       };    
    };
    </script><html>
    <p>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</p>
    <input type='button' id = 'l'  value='insert' />
    </html>