我将以编程方式生成的键盘事件发送到文档。我希望当前聚焦的输入元素能够显示它们,但事实并非如此。事件是使用以下函数从字符串生成的:
const simulateKeyPress = keys => {
keys.split('').forEach(theKey => {
const e = new window.KeyboardEvent('keypress', {
bubbles: true,
key: theKey,
keyCode: theKey.charCodeAt(0),
charCode: theKey.charCodeAt(0),
})
document.dispatchEvent(e)
})
}
如果我将 EventListener 添加到文档中,它将接收所有事件。他们的isTrusted
标志设置为 false 但是,这可能是问题吗?
它不能以编程方式从网站完成。像你说的isTrusted
boolean 为 false 不会正确触发按键(自 Chrome 53 起):https://developer.mozilla.org/en/docs/Web/API/Event/isTrusted
我试图在这里解决这个问题:https://codepen.io/zvona/pen/LjNEyr?editors=1010
实际上唯一的区别是将事件分派给activeElement
, like: document.activeElement.dispatchEvent(e);
。此外,如果您能够挂钩输入的事件,则可以添加事件侦听器来完成这项工作:
input.addEventListener('keypress', (evt) => {
evt.target.value += evt.key;
});
但正如前面提到的,这不是可信事件。但是,这可以通过浏览器扩展来完成(请参阅:如何在 Chrome 扩展程序中使用给定的字符/键码初始化键盘事件?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)