2012-12-19 16 views
35

Was ich will, ist die Eingabe in <input> Feld mit Javascript simulieren.Wie simuliert man Eingabe in Eingabefeld mit jQuery?

Ich habe den folgenden Code:

var press = jQuery.Event("keydown"); 
press.ctrlKey = false; 
press.which = 65; 
$("#test").trigger(press); 

Aber wenn ich die Seite laden, das #test Eingabefeld hat keine eingegebenen Zeichen, den Schlüsselcode von ‚65‘ steht für ‚A‘, aber es gibt keine ‚A "Eingabe.

Grundsätzlich, was ich will, ist die automatische Eingabe der Website mit Greasemonkey.

Bitte geben Sie mir einige Ideen oder eine Bibliothek, mit denen ich dies tun kann.
Vielen Dank!

Antwort

40

können Sie wichtige Ereignisse senden, und alles hören sie sie bekommen, aber sie werden nicht die Eingabe ändern, so dass Sie den Brief A erscheinen, zum Beispiel nicht sehen. Dies ist hauptsächlich eine Sicherheitssache. Eine Diskussion dazu finden Sie unter "Manually firing events".

Wenn also der Buchstabe angezeigt werden soll, müssen Sie den Wert der Eingabe ändern, während Sie das Schlüsselereignis senden. Es gibt ein jQuery-Plugin dafür, siehe "The $.fn.sendkeys Plugin".

Sie können sehen, wie eine <input> reagiert mit Benutzer-Tasten, Schlüsselereignisse und das Plugin bei this jsFiddle.

als Referenz, das ist der Schlüssel Stück Code aus diesem 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") ; 
    } 
}); 


Das Plugin sollte ausreichend sein, wenn Sie nur versuchen, „Typisierung zu simulieren auf einem <input>“. Allerdings, je nachdem, was Sie sind wirklich versuchen zu tun, müssen Sie möglicherweise eine oder mehrere der folgenden Funktionen ausführen:

  1. Nur stellen Sie den Text zu, was Sie wollen, es zu sein.
  2. Senden Sie ein keydown Ereignis, wenn das Javascript der Seite davon ausgelöst wird.
  3. Ebenso senden Sie ein 10 Ereignis, etc., wenn das Javascript der Seite davon auslöst.
  4. Suchen Sie einfach das Javascript der Seite direkt und rufen Sie es auf. Verwenden Sie Skript-Injektion, die Position hack, unsafeWindow und/oder @grant none Modus, um das zu tun.
  5. Etwas anderes? Nennen Sie Ihr wahres Ziel und verlinken Sie auf die Zielseite.
+1

es wirklich hilfreich :) – shuboy2014