Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery应用程序中的假键盘事件和捕捉监视键盘按下 问题_Javascript_Jquery_Google Chrome Extension - Fatal编程技术网

Javascript JQuery应用程序中的假键盘事件和捕捉监视键盘按下 问题

Javascript JQuery应用程序中的假键盘事件和捕捉监视键盘按下 问题,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在尝试用Chrome扩展来扩展web应用程序。现在,我需要自动化webapp中的一个步骤。在该步骤中,web应用程序有一个禁用的按钮,并要求输入特定的字符串。我可以使用以下方法输入字符串: //假设输入元素在输入变量中。 input.value=“必需字符串” 它不启用该按钮。仅当我手动在输入框中键入时,才会执行此操作。我尝试过调试,应用程序正在使用jQuery监视keyup事件。现在,它没有被启用是有意义的,因为该事件没有被触发 我试过什么? 我尝试使用以下方法来模拟键盘事件: inpu

我正在尝试用Chrome扩展来扩展web应用程序。现在,我需要自动化webapp中的一个步骤。在该步骤中,web应用程序有一个禁用的按钮,并要求输入特定的字符串。我可以使用以下方法输入字符串:

//假设输入元素在输入变量中。
input.value=“必需字符串”
它不启用该按钮。仅当我手动在输入框中键入时,才会执行此操作。我尝试过调试,应用程序正在使用jQuery监视
keyup
事件。现在,它没有被启用是有意义的,因为该事件没有被触发

我试过什么? 我尝试使用以下方法来模拟键盘事件:

input.dispatchEvent(新键盘事件('keyup',{'key':'key_HERE'}));
但它不会被输入捕获,按钮仍处于禁用状态。我还尝试了
input.focus()
input.select()
等方法来提高焦点,因为我在一些地方发现了这一点。但这也不起作用


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

以以下方式发送按键

input.dispatchEvent(新键盘事件('keyup',{'key':'key_HERE'}));
或者使用@wOxxOm所描述的
execCommand
,不会分派在
标记中物理键入内容时发生的所有事件

因此,如果您有一个类似的用例,您需要找出应用程序正在监视/捕获的事件,并单独分派该事件。对我来说,在简单地设置值之后发送一个
change
事件对我有效

input.value=“必需字符串”;
input.dispatchEvent(
新事件(“变更”{
泡泡:是的,
可取消:对,
}))

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

Try@wOxxOm我刚试过。它不起作用。假设您按照答案所示正确操作,唯一的其他方法是在devtools中检查/调试页面脚本,看看它是否还需要一些其他事件,如
focus
等等。@wOxxOm我已经用您的代码创建了一个快速沙盒,还向事件添加了侦听器。显然,它们不是通过使用
execCommand
命令触发的。关于调试脚本,我想它们已经缩小了,我无法检查它们。唯一的方法是点击并试用。是的,其中一个“智能”应用程序。。。我猜您将不得不使用初始方法,但应初始化更多字段,例如使用键代码的
keyCode
,可能还有其他字段。