Comment faire pour simuler des frappes de touche ou un clic avec le JavaScript?
J'ai écrit un Google Chrome extension et le site que je veux utiliser mon extension sur m'oblige à cliquer sur onglet ou sur une zone de texte (parce que je pense qu'il exécute le javaScript de vérification "onClick" seulement). Je peux obtenir le texte dans la case avec mon extension de l'aide:
document.getElementById("input1").value = 'test';
Mais quand je clique sur envoyer, il pense que je n'ai pas entrer quelque chose dans le "input1" zone de texte parce que je n'ai jamais cliqué dessus ou à onglets sur elle.
Quelqu'un peut-il m'aider à obtenir autour de cette?
Vous devez vous connecter pour publier un commentaire.
Simuler un clic de souris
Ma conjecture est que la page web est à l'écoute de mousedown plutôt que de la souris (ce qui est mauvais pour l'accessibilité parce que lorsqu'un utilisateur utilise le clavier, se concentrer uniquement et cliquez sur sont licenciés, pas mousedown). Donc, vous devez simuler mousedown, cliquez, et mouseup (qui, en passant, est ce que l'iPhone, l'iPod Touch et l'iPad n'sur appuyez sur événements).
Pour simuler les événements de souris, vous pouvez utiliser ce modèle pour les navigateurs qui prennent en charge DOM 2 Événements. Pour une plus infaillible de simulation, de remplir la position de la souris à l'aide de
initMouseEvent
à la place.Lorsque vous lancez une simulation, cliquez sur l'événement, le navigateur fait feu de l'action par défaut (par exemple, accédez au lien de href, ou soumettre un formulaire).
Dans IE, l'équivalent extrait de cette (non vérifiées puisque je n'ai pas IE). Je ne pense pas que vous pouvez donner le gestionnaire d'événement de la souris positions.
Simulant keydown et keypress
Vous pouvez simuler keydown et événements de pression de touche, mais, malheureusement, en Chrome-ils seulement le feu les gestionnaires d'événements et de ne pas effectuer les actions par défaut. Je pense que c'est parce que le DOM 3 Événements, document de travail décrit cette funky l'ordre des événements clés:
Cela signifie que vous devez (bien que peignage de la HTML5 et DOM 3 Événements brouillons) simuler une grande quantité de ce que le navigateur ne le feraient autrement. Je déteste quand je dois le faire. Par exemple, c'est à peu près comment simuler une pression sur une touche sur un input ou textarea.
Je ne pense pas qu'il est possible de simuler des événements clés dans IE.
vous pouvez augmenter l'événement click sur un élément en faisant
Exemple ici
focus
,change
,keypress
Ou même plus courte, avec seulement la norme moderne Javascript:
La
new MouseEvent
constructeur prend une manifestation de type nom, puis un objet facultatif (au moins dans Chrome). Afin de vous pourriez, par exemple, de définir certaines propriétés de l'événement:Pour simuler des événements de clavier dans google Chrome:
Il y a un problème dans webkit que les événements de clavier lorsqu'il est initialisé avec
initKeyboardEvent obtenir un mauvais mot de code et charCode de 0: https://bugs.webkit.org/show_bug.cgi?id=16735
Une solution de travail pour qu'il soit publié dans cette SORTE de réponse.
L'accent pourrait être ce que vous cherchez. Avec la tabulation ou en cliquant sur je pense que u veux dire de donner à l'élément le focus. Même code que Russ (Désolé, je l'ai volé :P), mais le tir d'un autre événement.