【问题标题】:Cannot insert text simulating a keyboard keydown event无法插入模拟键盘 keydown 事件的文本
【发布时间】:2017-11-29 06:59:51
【问题描述】:

我创建了一个以编程方式发送 KEYDOWN 事件的函数。

如果我打开开发者控制台,我可以看到事件已成功发送。 我使用此函数捕获事件:

document.addEventListener ('keydown', function () {
     console.log (JSON.stringify (event.keyCode))
}, false);

但是,如果我单击输入文本字段并以编程方式发送字母“W”的键值(例如),则该字母不会出现在其中。

我做错了什么?

这是以编程方式调度事件的函数:

function sendKeyDownEvent (keyCode) {
     var e = new Event ("keydown");
     e.keyCode = keyCode;
     e.which = e.keyCode;
     e.altKey = false;
     e.ctrlKey = true;
     e.shiftKey = false;
     e.metaKey = false;
     e.bubbles = true;
     document.dispatchEvent (e);
}

【问题讨论】:

标签: javascript html dom-events keyboard-events


【解决方案1】:
document.addEventListener ('keydown', function (event) { // pass the event 
 console.log (JSON.stringify (event.keyCode))
}, false);

您需要访问事件,因此在函数头中包含变量事件

【讨论】:

  • 如果我打开开发者控制台,我可以看到事件已成功调度 - window.event 可用于许多浏览器,而无需专门传递给函数
  • @mplungjan 我可以打印 event.keyCode。我的问题是我调度的事件没有在输入文本字段中写入字母。我正在发送密钥代码 89(字母 W),我希望将其写入文本输入字段。但它没有发生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2012-12-21
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 2013-05-25
  • 1970-01-01
相关资源
最近更新 更多