スパンで強調表示されたselectionstartとselectedlenghtを取得する方法はありますか?
ありがとう
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
これで、プロパティstartContainer
とstartOffset
があります。これらはそれぞれ、選択の開始を表すノードとそのノード内のオフセットへの参照であり、対応するプロパティendContainer
とendOffset
は選択の終了を表します。
これを試してみてください:
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);
このquirksmodeの投稿でいくつかの答えを見つけるかもしれません: