javascript - JQuery App中的假键盘事件和Catch监视keydown
问题描述
问题
我正在尝试使用 Chrome 扩展程序扩展网络应用程序。现在,我需要在 webapp 中自动化一个步骤。在这一步,Web 应用程序有一个禁用的按钮并要求输入特定的字符串。我可以使用以下方法输入字符串:
// Let's say the input element is in the input variable.
input.value = "required string"
它不启用按钮。只有当我在输入框中手动输入时才会这样做。keyup
我尝试调试,应用程序正在使用 jQuery监视事件。现在,它没有被启用是有道理的,因为该事件没有被触发。
我试过什么?
我尝试使用以下方法伪造键盘事件:
input.dispatchEvent(new KeyboardEvent('keyup', {'key':'KEY_HERE'}));
但它不会被输入捕获,并且按钮保持禁用状态。我也尝试过input.focus()
等等input.select()
来集中注意力,因为这是我在几个地方发现的。但这也没有用。
我不确定我在这里缺少什么,或者这是否可能。
解决方案
使用以下方式调度按键,
input.dispatchEvent(new KeyboardEvent('keyup', {'key':'KEY_HERE'}));
或使用execCommand
@wOxxOm 描述的,不会调度所有在<input/>
标签中物理输入内容的事件。
因此,如果您有类似的用例,您需要确定应用程序正在监视/捕获哪个事件并单独调度该事件。change
对我来说,在简单地设置值后调度事件对我有用。
input.value = "required string";
input.dispatchEvent(
new Event('change', {
bubbles: true,
cancelable: true,
}))
input
事件是另一种常用的。
推荐阅读
- javascript - 在处理错误之前检查中间 Rxjs 结果
- c# - 如何在 C# 中编组包含另一个结构的数组的非托管结构?
- python - 如何有效地填充 np.array?
- node.js - 是否可以对 db.list() 的结果进行排序?
- python - 单行修改列表中的所有元素?
- vba - VBA - 从通过 getopenfilename 打开的工作簿数组中提取工作簿名称
- node.js - Gitbook-cli install error TypeError: cb.apply is not a function inside graceful-fs
- python - 我已经开始在 Pygame 中编写 Flappy Bird 游戏,但我不知道如何显示 The Bird 和 The Bamboo 之间的碰撞?
- java - 如何使用printf以表格形式打印
- java - 一行代码破坏了我的整个代码,我不知道为什么,似乎无缘无故地调用了一个旧函数