从Chrome 53开始,不受信任的事件不再调用默认操作。 https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted
在Chrome 53之前,这个JavaScript会添加一个interrobang,‽。
var e = document.createEvent('TextEvent');
e.initTextEvent('textInput',
true,
true,
null,
String.fromCharCode( 8253 ));
document.activeElement.dispatchEvent(e);
在Chrome 53中,看看会发生什么:https://jsfiddle.net/dblume/2nfhrj1j/10/
由于使用createEvent()创建的事件是不受信任的,因此它不会像在Chrome 52及之前那样使用activeElement处理其数据。
我的Chrome扩展程序自Chrome 53起停止运行,因为它尝试调度此类textInput事件。它应该做什么呢?
答案 0 :(得分:4)
切换到适用于任何文本元素的document.execCommand
以及contenteditable="true"
的任何元素,并生成受信任的"input"
事件。文本插入插入位置(替换选择,如果有的话),就像它是由用户键入一样。与TextEvent
事件相比唯一的缺点是"input"
事件不包含插入的文本。
document.execCommand('insertText', false, String.fromCharCode(8253));
document.execCommand('insertHTML', false, '‽'); // the same