1

スパンで強調表示されたselectionstartとselectedlenghtを取得する方法はありますか?

ありがとう

4

3 に答える 3

2

IERangeのアルゴリズムの独自の最適化を使用します。これは、IEのTextRange(IEでの選択から取得するもの)のラッパーを提供して、DOMRangesと同じインターフェイスを提供します。

ドキュメントで選択を取得するには、次のようなものを使用します。

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 に答える