我正在为要操作的文本区域使用selectionStart
,selectionEnd
和selectionPosition
属性,但是我需要一个事件来告诉我这些值何时更改?
我找到了document selectionchange event,但这不是我想要的。它直接在文档上触发,并在文档中的任何选择更改(太多)时触发。我想要将范围限定在文本区域。
是否存在这样的事件?
如果没有,我将被迫在文本区域上使用文档的selectionchange事件或keyup / mouseup的组合以及一些额外的条件来确保它确实被更改。
似乎您无法在元素上触发选择更改事件,因此我们需要将其添加到文档中。
选择仅在给定的时间进行一次,因此,侦听并根据需要进行过滤实际上没有问题。请记住,元素上的所有事件无论如何都传播到document
,我们只是不听所有。
向演示添加了代码段。
Snippet:
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>