对于HTML TextArea元素,如何对其中编辑的文本的所有选择更改进行回调?
(我目前正在使用组合键盘,按键和鼠标移动(用于拖动选择端点)的黑客攻击,可能还会添加更多内容,但这并不是很优雅。)
无法在HTML文档或SO上找到它。
编辑:通过所有选择更改'我的意思是包括在使用鼠标选择期间的连续变化,并且我还希望在选择崩溃时以及只有移动的插入符号时选择回调(选择是零长度,但是更改)。我认为除了通过组合许多事件来实现这一点之外别无他法。甚至使用间隔回调并简单比较,但也不是很好。
答案 0 :(得分:2)
您想要的是selectionchange
或window
上可用的全局document
事件。阅读here。
为您的文本区域添加唯一的ID:
<textarea id="unique-id"></textarea>
将事件侦听器添加到文档中:
function handleSelection() {
const activeElement = document.activeElement
// make sure this is your textarea
if (activeElement && activeElement.id === 'unique-id') {
const range = {
start: activeElement.selectionStart,
end: activeElement.selectionEnd
}
// do something with your range
}
}
document.addEventListener('selectionchange', handleSelection)
这将运行handleSelection
函数中的任何代码。
答案 1 :(得分:0)
您可以使用onselect
事件
object.addEventListener("select", myScript);