我想要的是使用javascript模拟<input>
字段中的输入。
我有以下代码:
var press = jQuery.Event("keydown");
press.ctrlKey = false;
press.which = 65;
$("#test").trigger(press);
但是当我加载页面时,#test
输入字段没有打字字符,'65'的键码代表'A',但没有'A'输入。
基本上我想要的是使用Greasemonkey自动输入网站。
请给我一些想法或一些图书馆,我可以用来做这件事 非常感谢!
答案 0 :(得分:46)
您可以发送关键事件,任何倾听它们的内容都会得到它们,但它们不会更改输入,因此您不会看到字母A
出现,例如。这主要是安全的事情;有关此问题的讨论,请参阅"Manually firing events"。
因此,如果您希望显示该字母,则必须在发送键事件时更改输入的值。有一个jQuery插件,请参阅"The $.fn.sendkeys
Plugin"。
您可以看到<input>
如何对用户应用的密钥,关键事件以及this jsFiddle处的插件做出反应。
作为参考,这是jsFiddle的关键代码:
$("button").click ( function (zEvent) {
if (zEvent.target.id == "simA_plain") {
console.log ("Send Plain key event");
var keyVal = 65;
$("#eventTarg").trigger ( {
type: 'keypress', keyCode: keyVal, which: keyVal, charCode: keyVal
} );
}
else {
console.log ("Use the Plugin to simulate a keystroke");
$("#eventTarg").sendkeys ("B") ;
}
} );
如果您只是想“模拟<input>
上的输入”,该插件应该足够了。但是,根据您真正尝试做的事情,您可能需要执行以下一项或多项操作:
keydown
事件,如果页面的javascript触发了该事件。change
事件等。unsafeWindow
和/或@grant none
模式来执行此操作。