1

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

谢谢

4

3 回答 3

2

我在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表示选择的结束。

于 2009-10-22T08:50:47.580 回答
1

试试这个:

  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);
于 2009-10-22T08:22:50.537 回答
0

您可能会在这篇quirksmode 帖子中找到一些答案:

于 2009-10-22T07:43:03.923 回答