web-dev-qa-db-fra.com

événement de frappe ne fonctionne pas dans IE et Chrome mais travaillant en FF

Une idée pourquoi cela pourrait arriver? Je penserais généralement que Chrome serait plus indulgent avec les codes?

$(document).keypress(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

C’est ce à quoi ressemble ma touche. Est-ce que je manque quelque chose? rightImage (); et leftImage (); sont des fonctions qui devraient fonctionner parce que j'utilise ces fonctions ailleurs

Merci pour l'aide!

14
hellomello

Remplacez keypress par keydown:

$(document).keydown(function(e) {
    if(e.keyCode == 39) rightImage();
    if(e.keyCode == 37) leftImage();
});

L'événement keydown se produit lorsque l'utilisateur appuie sur la touche, suivi immédiatement par l'événement de pression. Ensuite, l'événement keyup est généré lorsque la clé est relâchée.

Afin de comprendre la différence entre une pression sur une touche et une pression sur une touche, il est utile de comprendre la différence entre un "caractère" et une "touche". Une "clé" est un bouton physique du clavier de l'ordinateur, tandis qu'un "caractère" est un symbole saisi en appuyant sur un bouton. En théorie, les événements keydown et keyup représentent les touches enfoncées ou relâchées, tandis que l'événement de frappe représente un caractère en cours de saisie. La mise en œuvre de la théorie n'est pas la même dans tous les navigateurs.

36
jao

Vous avez trouvé la réponse ici: http://api.jquery.com/keypress/

"Si vous souhaitez utiliser les flèches, supprimer, les touches de retour arrière dans Chrome, vous devez utiliser keydown. Les pressions sur ces touches ne fonctionnent que dans Firefox et Opera."

Votre code ne fonctionnait pas pour moi dans iE8 (fonctionnait en FF), alors je suis passé au clavier en appuyant sur la touche. Fonctionne dans IE maintenant. Ne pas avoir Chrome ici pour tester.

2
AR.

oui, ceci peut être réalisé en modifiant l'événement onkeypress en onkeydown. De plus, ce problème existe uniquement dans le cas d'Internet Explorer lorsque vous souhaitez déclencher un événement sur un clic dans l'espace.

0
Vivek Singh