我试图在div中找到所选文本的位置。我提示用户在div中选择文本的子字符串然后提交它。我需要起点和终点的索引,并且使用下面的策略未成功。任何帮助将非常感激。
这是我的功能,但它不起作用:
if (typeof window.getSelection != 'undefined') {
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var preCaretRange = range.cloneRange();
startOffset = preCaretRange.toString().length;
endOffset = startOffset + range.toString().length;
}
div被称为“myarea”。谢谢
答案 0 :(得分:3)
你几乎做对了!
startOffset
导致它无法正常工作
目前它是:
var startOffset = preCaretRange.toString().length;
RHS上的值preCaretRange.toString().length
将返回已选择的字符串的总长度,不起始位置。要获得起始位置,您可以使用 范围存储的startOffset
属性。因此:
var startOffset = preCaretRange.startOffset;
关于优化的说明:您无需将range
克隆到preCaretRange.
。
document.body.addEventListener('mouseup', function () {
if (typeof window.getSelection != 'undefined') {
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var startOffset = range.startOffset;
var endOffset = startOffset + range.toString().length - 1;
console.log("Selection starts at: " + startOffset);
console.log("Selection ends at: " + endOffset);
}
}, false);
这是一个小提琴,它演示了如何使用实际文本选择:http://jsfiddle.net/Dp3qp/3/