javascript中选择的位置
我试图在div中查找所选文本的位置。我会提示用户在div中选择文本的子字符串,然后提交它。我需要起点和终点的索引,并且没有成功地使用下面的策略。任何帮助都将不胜感激 这是我的功能,但它不起作用:javascript中选择的位置,javascript,html,Javascript,Html,我试图在div中查找所选文本的位置。我会提示用户在div中选择文本的子字符串,然后提交它。我需要起点和终点的索引,并且没有成功地使用下面的策略。任何帮助都将不胜感激 这是我的功能,但它不起作用: if (typeof window.getSelection != 'undefined') {
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;
}
该分区称为“myarea”。谢谢你几乎答对了
是
startOffset
导致它无法工作。目前是:
var startOffset = preCaretRange.toString().length;
RHS上的值precretange.toString().length
将返回所选字符串的总长度,而不是起始位置。要获得起始位置,您需要使用范围存储的startOffset
属性。因此:
var startOffset = preCaretRange.startOffset;
关于优化的注意事项:您不需要将范围
克隆到预重传中。
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);
下面是一个小提琴,它演示了如何使用实际的文本选择:哪一行“不起作用”?如果条件为真,您的
条件是否为真?有任何一行抛出错误吗?您是否返回范围的数值,但它们与预期值不同(例如,-1
,0
)?可能相关且有用:这适用于起始偏移,但不适用于结束偏移。。它给出的索引比实际索引大。因此,它适用于第一个选择,但不适用于以下选择。如果您要查找包含的结束范围,则只需将endOffset
更改为endOffset-1
我使用多个选择对其进行了测试,结果似乎没有问题,你能详细说明一下你的测试输入吗?当然,所以我用它来选择div“myarea”中的文本,然后单击一个按钮来记录选择,然后再次选择。但是,第一次选择始终有效。。以下选择始终不正确。