是否有一个事件会告诉我文本区域的选择/光标位置何时更改?



我正在为正在操作的文本区域使用selectionStartselectionEndselectionPosition属性,但我需要一个事件来告诉我这些值何时更改?

我发现了文档选择更改事件,但这不是我想要的。它直接在文档上激发,并在文档中的任何选择发生更改(更改过多(时激发。我想要一些范围到文本区域的内容。

是否存在这样的事件?

如果没有,我将被迫使用文档的selectionchange事件或文本区域上的keyup/mouseup组合以及一些额外条件,以确保它确实发生了更改。

似乎无法在元素上激发选择更改事件,因此我们需要添加到文档中。

选择在给定的时间只发生一次,所以听它并根据需要进行过滤真的没有问题。请记住,元素上的所有事件都在传播到document,我们只是没有全部听到它们。

在演示中添加了一个片段。

代码段:

const target = document.querySelector('#content');
document.addEventListener('selectionchange', checkSelection);
function checkSelection(e) {
if(document.activeElement !== target) {
return;
}

console.log(document.getSelection().toString());
}
<textarea id="content">
How do I check where the cursor is?
</textarea>
<textarea id="notme">
Not this content please
</textarea>

最新更新