Javascript 以编程方式发送键盘事件不会';不要把它们分配到输入中
我正在向文档发送以编程方式生成的键盘事件。我希望当前关注的输入元素能够显示它们,但事实并非如此。使用此函数从字符串生成事件:Javascript 以编程方式发送键盘事件不会';不要把它们分配到输入中,javascript,input,keyboard-events,Javascript,Input,Keyboard Events,我正在向文档发送以编程方式生成的键盘事件。我希望当前关注的输入元素能够显示它们,但事实并非如此。使用此函数从字符串生成事件: const simulateKeyPress = keys => { keys.split('').forEach(theKey => { const e = new window.KeyboardEvent('keypress', { bubbles: true, key: theKey, keyCode: t
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 as false不会正确触发按键(因为Chrome 53):
我试图在这里解决这个问题:
实际上唯一的区别是为activeElement
调度事件,比如:document.activeElement.dispatchEvent(e)代码>。此外,如果能够钩住输入的事件,则可以添加事件侦听器来执行此任务:
input.addEventListener('keypress', (evt) => {
evt.target.value += evt.key;
});
但正如前面提到的,这不是可信事件。但是,这可以通过浏览器扩展来实现(请参阅:)Hi,您是否碰巧有一些关于“不会正确触发按键(因为Chrome 53)”的参考资料。有什么声明吗?支持isTrusted
属性真的意味着这一点吗?