如何使用纯JavaScript模拟Chrome 56中输入网页元素中输入的密钥?

Lor*_*ren 10 javascript google-chrome

我正在网页中开发一些程序化自动化,并试图在Chrome 56(特别是56.0.2924.87)的输入网页元素中输入击键,似乎无法使其正常工作.

我已经完成了我的家庭作业并尝试了许多在线示例,包括在此处找到的示例:Javascript - 模拟Chrome 53上的关键事件,但没有运气.

这是我最近(目前不工作)的尝试,基于上述问题中提供的解决方案:

<!DOCTYPE html>

<head>
  <meta charset="utf-8" />
  <title>Keyboard Events</title>
</head>

<body>
  <input id="id_input" onkeydown="console.log(event);">
  <button onclick="
    var e = new Event('keydown');
    e.keyCode = 65;
    document.getElementById('id_input').dispatchEvent(e);
    ">click me</button>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

您可以观察正在生成的事件,但输入Web元素中不会出现任何字符.

非常感谢一个有效的JavaScript示例,在Chrome 56中工作,按下页面上的按钮和出现在输入web元素中的字符,不设置输入web元素的"value"属性.工作解决方案必须导致字符仅通过使用事件(可能是keypress/keydown等)出现

更新:我的问题与此问题不同:如何在JavaScript中触发事件?因为我已经在使用解决方案中列出的dispatchEvent方法了.我的问题的答案可能包括我所包含的第一个链接的多次尝试中尚未概述的额外步骤.

gri*_*edj 6

就在Chrome扩展程序中从内部实现此功能而言,看起来可以使用变通方法.这些链接可能会有所帮助.

Keydown哪个无效Chrome扩展如何使用Chrome扩展中的给定char/keycode
初始化键盘事件?

但是,在网页上,这是不可能的.至少不使用Chrome 56.Event对象有一个isTrusted只读属性.

如果由键盘上的真实用户调用,则该事件是"受信任的",如果由脚本调用,则该事件是"不受信任的".

如图所示这里,不可信的事件不会调用默认的动作.自Chrome 53以来就存在这种情况.