javascript - Chrome:使用 javascript 在输入文本字段上模拟按键事件
问题描述
堆栈溢出中有很多内容,但似乎没有一个适合我的情况。我有一个输入文本字段,我想模拟按键事件来填充文本字段。
原因:我在不提供 API 的 Web 界面上自动执行大量数据输入任务。使用更改输入字段.value
不会触发界面的 JS 端(角度)。这就是我想模拟按键事件的原因。
首先我尝试了这个:
var inp = document.getElementById('rule-type');
inp.dispatchEvent(new KeyboardEvent('keypress',{'key':'a'}));
然后我在 Chrome 中学习了key
andcode
保持为 0 并且在KeyBoardEvent
.
所以我创建了单独的事件ev = new KeyboardEvent('keypress',{'key':'a', 'code': 'KeyA'})
然后我再次派发,return 语句是,true
但它并没有改变输入字段。
解决方案需要使用纯 javascript 而不是 jQuery。
解决方案
您将无法触发将导致文本填充输入的事件。请参阅MDN的此片段:
注意:手动触发事件不会生成与该事件关联的默认操作。例如,手动触发键事件不会导致该字母出现在焦点文本输入中。对于 UI 事件,出于安全原因,这很重要,因为它可以防止脚本模拟与浏览器本身交互的用户操作。
您最好的选择可能是设置该值,然后发送一个事件。
推荐阅读
- python - 如何将文本文件格式化为表格格式?
- javascript - 我收到“给定密文的错误密钥”
- googletest - 谷歌测试链接错误:文件是为存档而构建的,它不是被链接的架构(macOS)
- c++ - 别名来自私有子结构的静态成员的定义
- java - 如何在不破坏 CoordinatorLayout.LayoutParams 的情况下覆盖 CoordinatorLayout.Behavior
- r - 如何读取知道列名但不知道宽度的固定宽度文件?
- sql - Excel中的连接字符串不允许除我之外的任何人刷新
- java - 如何在 setName(String); 之后获取不为空的运行时创建的组件名称?
- java - 如何在 snmp4j 中实现二进制 (b) 变量
- python-3.x - 调用 Curl 从另一个 Docker 容器服务获取响应