编程语言
首页 > 编程语言> > javascript-以编程方式发送键盘事件不会将它们分派到输入中

javascript-以编程方式发送键盘事件不会将它们分派到输入中

作者:互联网

我将以编程方式生成的键盘事件发送到文档.我希望当前关注的输入元素能够显示它们,但是不会显示.这些事件是使用以下函数从字符串生成的:

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布尔值为false一样,不会正确触发按键(因为Chrome 53):https://developer.mozilla.org/en/docs/Web/API/Event/isTrusted

我试图在这里解决这个问题:https://codepen.io/zvona/pen/LjNEyr?editors=1010

实际上只有区别在于为activeElement调度事件,例如:document.activeElement.dispatchEvent(e);.此外,如果您能够钩住输入的事件,则可以添加事件侦听器来完成此工作:

input.addEventListener('keypress', (evt) => {
  evt.target.value += evt.key;
});

但是就像提到的那样,这不是可信任的事件.但是,这可以通过浏览器扩展来完成(请参阅:How to to initialize keyboard event with given char/keycode in a Chrome extension?)

标签:javascript,input,keyboard-events
来源: https://codeday.me/bug/20191013/1909094.html