93 votes

Capter la pression d'une touche sans placer un élément de saisie sur la page ?

Comment capturer l'appui sur une touche, par exemple Ctrl+Z, sans placer un élément de saisie sur la page en JavaScript ? Il semble que dans IE, les événements keypress et keyup ne peuvent être liés qu'à des éléments de saisie (zones de saisie, zones de texte, etc.).

1voto

iusting Points 103

Attachez un écouteur à la keydown au lieu de keypress puisque ce dernier est maintenant déprécié .

window.addEventListener('keydown', keyDownHandler);

Le site keydown se déclenche en continu tant que la touche est enfoncée. Si vous voulez qu'il ne se déclenche qu'une seule fois, dans le gestionnaire, utilisez l'attribut event.repeat la propriété ainsi :

keyDownHandler(event) {
     if (!event.repeat) {
         <code here will only be executed once while the key is pressed>
     }
}

N'oubliez pas de retirer l'écouteur lorsque vous n'en avez plus besoin.

window.removeEventListener('keydown', keyDownHandler);

0voto

rob Points 3743

Document.onkeydown=keyDown ;

document.onkeypress=keyPress ;

etc.

Cela fonctionne pour moi dans IE

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X