Ce que je veux, c'est simuler la saisie de <input>
champ utilisant javascript.
J'ai le code suivant:
var press = jQuery.Event("keydown");
press.ctrlKey = false;
press.which = 65;
$("#test").trigger(press);
Mais quand je charge la page, le #test
le champ de saisie n'a pas de caractères dactylographiés, le code clé de '65' représente 'A', mais il n'y a pas d'entrée 'A'.
Fondamentalement, ce que je veux, c'est taper automatiquement le site Web à l'aide de Greasemonkey.
Veuillez me donner quelques idées ou une bibliothèque avec laquelle je peux utiliser pour ce faire.
Merci beaucoup!
Vous pouvez envoyer des événements clés, et tout ce qui les écoute les obtiendra, mais ils ne changeront pas l'entrée , donc vous ne verrez pas la lettre A
apparaît, par exemple. C'est surtout une question de sécurité; voir "Événements de déclenchement manuel" pour une discussion à ce sujet.
Par conséquent, si vous souhaitez que la lettre apparaisse, vous devez modifier la valeur de l'entrée lors de l'envoi de l'événement clé. Il existe un plugin jQuery pour cela, voir "Le $.fn.sendkeys
Plugin " .
Vous pouvez voir comment un <input>
réagit avec les clés appliquées par l'utilisateur, les événements clés et ce plugin à ce jsFiddle .
Pour référence, ceci est l'élément clé du code de ce 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") ;
}
} );
Ce plugin devrait être suffisant si vous essayez simplement de "simuler la saisie sur un <input>
". Cependant, selon ce que vous essayez de faire vraiment, vous devrez peut-être effectuer une ou plusieurs des actions suivantes:
keydown
, si le javascript de la page se déclenche.change
, etc., si le javascript de la page se déclenche.unsafeWindow
et/ou @grant none
mode pour le faire.