我试图在 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;
}
Run Code Online (Sandbox Code Playgroud)
该 div 被称为“myarea”。谢谢
你几乎猜对了!
它startOffset是导致它无法工作的原因。
目前是:
var startOffset = preCaretRange.toString().length;
Run Code Online (Sandbox Code Playgroud)
RHS 上的值preCaretRange.toString().length将返回已选择的字符串的总长度,而不是起始位置。要获得起始位置,你会使用startOffset存储的属性通过的范围内。所以:
var startOffset = preCaretRange.startOffset;
Run Code Online (Sandbox Code Playgroud)
关于优化的说明:您不需要克隆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);
Run Code Online (Sandbox Code Playgroud)
这是一个演示它使用实际文本选择的小提琴:http : //jsfiddle.net/Dp3qp/3/
| 归档时间: |
|
| 查看次数: |
2583 次 |
| 最近记录: |