如何使用jQuery模拟输入字段中的输入?

use*_*652 40 javascript jquery greasemonkey textinput keyboard-events

我想要的是模拟<input>使用javascript 在字段中键入.

我有以下代码:

var press = jQuery.Event("keydown");
press.ctrlKey = false;
press.which = 65;
$("#test").trigger(press);
Run Code Online (Sandbox Code Playgroud)

但是当我加载页面时,#test输入字段没有打字字符,'65'的键码代表'A',但没有'A'输入.

基本上我想要的是使用Greasemonkey自动键入网站.

请给我一些想法或一些我可以用来做这个的库.
非常感谢!

Bro*_*ams 48

你可以发送关键事件,任何听取它们的内容都会得到它们,但它们不会改变输入,所以你不会看到这个字母A出现,例如.这主要是安全的事情; 请参阅"手动触发事件"以进行讨论.

因此,如果您希望显示该字母,则必须在发送键事件时更改输入的值.有一个jQuery插件,请参阅" $.fn.sendkeys插件".

您可以<input>此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") ;
    }
} );
Run Code Online (Sandbox Code Playgroud)

如果你只是试图"模拟打字",那插件应该足够了<input>.但是,根据您真正想要做的事情,您可能需要执行以下一项或多项操作:

  1. 只需将文本设置为您想要的文本即可.
  2. keydown如果页面的javascript触发了该事件,则发送一个事件.
  3. 同样,change如果页面的javascript触发了该事件,则发送事件等.
  4. 只需找到并直接调用页面的javascript即可.使用脚本注入,该位置黑客,unsafeWindow和/或@grant none模式来做到这一点.
  5. 别的什么?陈述您的真实目标并链接到目标页面.