如题:比如有一个DIV当中选中文字即显示选啊文字所在的位置。是多个段落里选中。并不是单一段落里。
如<p>123456</p><p>abcbf</p>
选取b后,显示:选中的文字:b,所在位置(8,8)。这里主要是请教非IE浏览器的选取问题,谢谢大家。

解决方案 »

  1.   

    不知有没有灵活点方法<!DOCTYPE html>
    <html lang="en">
      <body> 
    <p>123456</p><p>abcbf</p>
     </body>
     <script>
    var sel=window.getSelection(); 
    var rng=document.createRange(); 
    var ps=document.getElementsByTagName('p')
     sel.removeAllRanges();
     rng.setStart(ps[0].childNodes[0],2);
     rng.setEnd(ps[1].childNodes[0],2);
    sel.addRange(rng);
    </script>
     </html>
      

  2.   

    function insertText(divId) {
        var obj = document.getElementById(divId);
    var tmpStr = obj.InnerHtml;
        
        VAR b, startPos, endPos;
    if (document.selection) {
    // FOR IE
    var sel = document.selection.createRange();
    var pre = sel.boundingWidth/sel.text.length;
    startPos = sel.boundingLeft/pre;
    endPos = startPos+sel.text.length;
    b = sel.text;
    } else if (typeof obj.selectionStart == 'number'
    && typeof obj.selectionEnd == 'number') {
    // FOR others
    startPos = obj.selectionStart; 
    endPos = obj.selectionEnd;
    b = tmpStr.substring(startPos, tmpStr.length-endPos);
    } else {
    startPos = endPos = 0;
    b = tmpStr;
    }

    // Result 选中的文字:b,所在位置(startPos,endPos); startPos 与 endPos是指选中字符位置
    }
      

  3.   


    在极速360浏览器当中使用,获取不到对象,还有IE当中的已经解决,请帮助集中解决非IE的浏览器即可。谢谢您的回复。
      

  4.   

     if (typeof obj.selectionStart == 'number' && typeof obj.selectionEnd == 'number') {
         // FOR others
         startPos = obj.selectionStart; 
         endPos = obj.selectionEnd;
         b = tmpStr.substring(startPos, tmpStr.length-endPos);
    }
    这段即是针对非IE浏览器的,我木有装360,但是FF,Chrome, Safari, Opera都已支持
      

  5.   


    var obj = document.getElementById(divId);//这句就不是所有主流浏览器所支持的吧。
    var tmpStr = obj.InnerHtml;另外在IE当中是显示的位置是小数点了的。
    我这里是的html形式的.不是文本框的。
    在Chrome,Opera都不行。
    我这边测试引用时是:insertText('divID')。
    还请指教。
      

  6.   

    试试 replace();用正则表达式 加上参数g来选择
      

  7.   

    主要是非IE浏览器的获取对象问题。var my_selection=window.getSelection();
    alert("您选中的文字:"+ my_selection.toString());
    alert("选中文字的开始位置:"+range.startOffset);
    alert("选中文字的结束位置:"+range.endOffset);类似如上代码,p被视为新的range,重新计算了,即是只计算到所选文字P的对应文字的所在位置。。