假键盘事件和捕获在 JQuery 应用程序中监视键下



>问题

我正在尝试使用 Chrome 扩展程序扩展网络应用程序。现在,我需要在 Web 应用程序中自动执行一个步骤。在该步骤中,Web 应用有一个禁用按钮,并要求输入特定字符串。我能够使用以下方法输入字符串:

// Let's say the input element is in the input variable.
input.value = "required string"

它不会启用该按钮。仅当我手动输入输入框时,它才会起作用。我尝试调试,应用程序正在使用 jQuery 监视keyup事件。现在,由于未触发该事件,因此未启用它是有道理的。

我试过什么?

我尝试使用以下方法伪造键盘事件:

input.dispatchEvent(new KeyboardEvent('keyup',  {'key':'KEY_HERE'}));

但它不会被输入捕获,并且按钮保持禁用状态。我也尝试了input.focus()input.select()等来吸引焦点,因为这是我在一些地方发现的。但这也没有用。

我不确定我在这里错过了什么,或者这是否可能。

按以下方式调度按键,

input.dispatchEvent(new KeyboardEvent('keyup',  {'key':'KEY_HERE'}));

或者按照@wOxxOm描述使用execCommand,不会调度在标签中物理键入某些内容<input/>附带的所有事件。

因此,如果您有类似的用例,则需要确定应用程序正在监视/捕获的事件,并单独调度该事件。对我来说,在简单地设置值后调度一个change事件对我有用。

input.value = "required string";
input.dispatchEvent(
new Event('change', {
bubbles: true,
cancelable: true,
}))

input事件是另一个常用的事件。

最新更新