st-*_*ost 5 javascript textarea
我有一种迷你应用程序,除其他外,手动修改输入文本区域.简单地设置值(以及可选地恢复光标/滚动位置)有一个很大的缺点:它会扰乱编辑历史记录.所以我使用这个函数进行所有修改:
function type(el, str) {
var e = document.createEvent('TextEvent');
e.initTextEvent('textInput', true, true, null, str);
el.dispatchEvent(e);
}
Run Code Online (Sandbox Code Playgroud)
我的项目支持不佳,该功能非常适合插入文本和替换文本(选择要替换的文本,然后调用type).但是当它用一个空字符串调用时,它什么都不做.
对于某些删除,我可以解决这个问题,方法是选择我要删除的文本和额外的文本,重新输入额外的位,然后适当地移动光标.但如果我们删除textarea中的所有内容,那是不可能的.
那么有没有人知道一个变通方法,或者其他一些方法来修改textarea的值而不会弄乱编辑历史记录?
不要传入空字符串,而是传入\0. 这似乎在这里有效。或者你可以像这样检测一个空字符串:
function type(el, str) {
var e = document.createEvent('TextEvent');
e.initTextEvent('textInput', true, true, null, str || "\0");
el.dispatchEvent(e);
}
Run Code Online (Sandbox Code Playgroud)