我正在为正在操作的文本区域使用selectionStart
、selectionEnd
和selectionPosition
属性,但我需要一个事件来告诉我这些值何时更改?
我发现了文档选择更改事件,但这不是我想要的。它直接在文档上激发,并在文档中的任何选择发生更改(更改过多(时激发。我想要一些范围到文本区域的内容。
是否存在这样的事件?
如果没有,我将被迫使用文档的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>