首页 > 解决方案 > Chrome:使用 javascript 在输入文本字段上模拟按键事件

问题描述

堆栈溢出中有很多内容,但似乎没有一个适合我的情况。我有一个输入文本字段,我想模拟按键事件来填充文本字段。

原因:我在不提供 API 的 Web 界面上自动执行大量数据输入任务。使用更改输入字段.value不会触发界面的 JS 端(角度)。这就是我想模拟按键事件的原因。

首先我尝试了这个:

var inp = document.getElementById('rule-type');
inp.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));

然后我在 Chrome 中学习了keyandcode保持为 0 并且在KeyBoardEvent.

所以我创建了单独的事件ev = new KeyboardEvent('keypress',{'key':'a', 'code': 'KeyA'})

然后我再次派发,return 语句是,true但它并没有改变输入字段。

解决方案需要使用纯 javascript 而不是 jQuery。

标签: javascript

解决方案


您将无法触发将导致文本填充输入的事件。请参阅MDN的此片段:

注意:手动触发事件不会生成与该事件关联的默认操作。例如,手动触发键事件不会导致该字母出现在焦点文本输入中。对于 UI 事件,出于安全原因,这很重要,因为它可以防止脚本模拟与浏览器本身交互的用户操作。

谢谢@gforce301

您最好的选择可能是设置该值,然后发送一个事件。


推荐阅读