有没有办法在跨度上获得突出显示的 selectionstart 和 selectedlenght ?
谢谢
我在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
表示选择的结束。
试试这个:
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 帖子中找到一些答案: