var rg = null;
            if(window.getSelection) { rg = window.getSelection().getRangeAt(0);}
           
            else if(document.getSelection) { rg = document.getSelection().getRangeAt(0);}
            //if(rg.toString() != "")
            if(rg){
                var dom = rg.startContainer;
                var val = dom.nodeValue;
                var begin = rg.startOffset;
                var end = rg.endOffset;
                var pre = 0;
                var next = 0;
                if($.trim(val[begin]).length > 0){
                    //向前搜索
                     for(var i = 0; i < 30; ++i){
                        if(begin == i || $.trim(val[begin - i]).length == 0 || val[begin - i].match(/[,?!.;]{1,}/g)){
                            pre = i - 1;
                            break;
                        }
                     }
                    //向后搜索
                    for(var i = 0; i < 30; i++){
                        if($.trim(val[end + i]).length == 0 || val[end + i].match(/[,?!.;]{1,}/g)){
                            next = i;
                            break;
                        }
                    }
                   
                    
                   rg.setStart(rg.startContainer,begin - pre);
                   rg.setEnd(rg.endContainer,end + next); 
                   var el = document.createElement("span");
                   rg.surroundContents(el);
                   $(el).addClass("select");
                   //alert(el.innerHTML);
                }
            }上面这个方法能是通过加span加css样式来选中一个单词的,能不能不通过加span加css样式选中呢?
IE里可以 
var rng =  document.body.createTextRange();
rng.select();
火狐和谷歌能像ie这样选中一个单词吗?

解决方案 »

  1.   

    createTextRange() 是IE独有的方法,Firefox和Chrome是不支持的。
      

  2.   

    这个我知道,现在不就是问火狐下怎么弄吗?
    就是div里一段文字,我想单击鼠标选中一个单词,就和双击一样的效果(双击会选中整个单词的)
      

  3.   

    ie里有range.select()
    火狐和谷歌浏览器里用什么来代替range.select()请高手帮忙解答一下
      

  4.   

    看下以前的帖子http://www.jb51.net/article/10564.htm
    http://topic.csdn.net/u/20081111/20/e8c0a451-7e00-427e-906c-98e22fce6c4a.html
      

  5.   

    4楼大哥,不行啊,也是通过加span样式来实现的
    我不想加span
      

  6.   

    http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.htmlDOM2里都没有这个方法,看来,其他浏览器没有select()的替代方法……还是曲线救国吧……
      

  7.   

    其他方法是什么方法呢?
    因为加span和样式后会影响其他的功能
      

  8.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>selectedText.html</title>

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        </head>
      <body>
    <div id="dvCT">中国人民共和国共和
    </div>
    <input type="button" value="清除颜色" onclick="$('dvCT').innerHTML=removeHTML($('dvCT').innerHTML)" />
    <script language="javascript">
    function $(Id){return document.getElementById(Id);}
    function removeHTML(v){return v.replace(/<[^>]+>/g,'');}
    document.onmouseup=function(){
      var isIE=!!document.all;
      if(isIE){
        var rng=document.selection.createRange();
        if(rng.text!='')rng.pasteHTML(rng.text.fontcolor('#ff0000'));
      } else {
        var s = window.getSelection();
        if(s.toString()!=''){
           var font=document.createElement('font');
           font.color='#ff0000';
           font.innerHTML=s;
           s.getRangeAt(0).surroundContents(font);
           s.removeAllRanges();
        }
      }
    }
    </script>
      </body>
    </html>