【问题标题】:how to get span selected portion using Javascript如何使用 Javascript 获取跨度选定部分
【发布时间】:2009-10-22 07:34:53
【问题描述】:

有没有办法在跨度上获得突出显示的 selectionstart 和 selectedlenght ?

谢谢

【问题讨论】:

  • 确切地告诉我们您要做什么。

标签: javascript highlighting


【解决方案1】:

我在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 现在具有属性startContainerstartOffset,它们分别是对节点的引用和该节点内表示选择开始的偏移量,以及相应的属性endContainerendOffset表示选择的结束。

【讨论】:

    【解决方案2】:

    试试这个:

      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);
    

    【讨论】:

    • 谢谢,但是 span.createTextRange();给出一个错误。它只支持 textarea
    【解决方案3】:

    您可能会在quirksmode post 中找到一些答案:

    【讨论】:

    • 您好,感谢您的快速回复。这里的问题是,当用户在特定跨度(asp.net 标签)上选择文本片段时,我需要获取选定的开始和结束吗?无论如何我可以这样做吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2013-10-21
    • 2020-07-13
    • 2014-12-07
    • 2020-09-02
    • 2021-11-13
    相关资源
    最近更新 更多