代码之家  ›  专栏  ›  技术社区  ›  kakopappa

如何使用javascript获取跨选定部分

  •  1
  • kakopappa  · 技术社区  · 15 年前

    有没有一种方法可以在跨度上突出显示选择开始和选择长度?

    谢谢

    3 回复  |  直到 15 年前
        1
  •  0
  •   Tim Down    15 年前

    我使用我自己的算法优化 IERange ,它提供了一个围绕IE的textRange的包装器(这是从IE中的选择中获得的),以便为它们提供与DOM范围相同的接口。

    要在文档中获取所选内容,请使用如下内容:

    var sel = window.getSelection(); // Provided by IERange in IE, built-in in other browsers
    var range = sel.getRangeAt(0); // Note this doesn't work in Safari 2
    

    range 现在有属性 startContainer startOffset ,分别是对节点的引用和该节点内表示选择起点的偏移量,以及相应的属性。 endContainer endOffset 表示所选内容的结尾。

        2
  •  1
  •   jerjer    15 年前

    尝试一下:

      var span = document.getElementById('span1');
      if (document.selection) { //IE
          var bm = document.selection.createRange().getBookmark();
          var sel = span.createTextRange();
          sel.moveToBookmark(bm);
    
          var sleft = span.createTextRange();
          sleft.collapse(true);
          sleft.setEndPoint("EndToStart", sel);
          span.selectionStart = sleft.text.length
          span.selectionEnd = sleft.text.length + sel.text.length;
          span.selectedText = sel.text;
      }
      else if (span.selectionStart){ //FF
         span.selectedText = span.substring(span.selectionStart,span.selectionEnd);
      }
    
      alert("Selection Start==> " + span.selectionStart + "\n" +
         "Selection End  ==> " + span.selectionEnd + "\n" +
         "Selected Text  ==> " + span.selectedText + "\n" +
         "TextArea Value ==> " + span.value);
    
        3
  •  0
  •   klaaspieter    15 年前

    你可以从中找到一些答案 quirksmode post :

    推荐文章