2016-12-30 1 views
0

J'ai remarqué que lorsque vous maintenez une touche alphabétique enfoncée comme 'A', l'événement de touche est déclenché continuellement tant que vous le maintenez enfoncé. Toutefois, lorsque vous maintenez la touche Maj enfoncée, l'événement est déclenché une seule fois. Je veux baser ma logique d'application sur cette observation, mais je ne sais pas si c'est un comportement standard dans tous les navigateurs. Quelqu'un peut-il confirmer?Comportement de l'événement Keydown en maintenant la touche Shift enfoncée

+0

Avez-vous regardé http://www.quirksmode.org/dom/events/keys.html – Snowmonkey

+0

Je ne vois pas pourquoi le décalage aurait jamais besoin d'être "auto-spammable". À moins que vous n'ayez besoin de réagir directement à un changement, appuyez sur le bouton droit, vous feriez probablement mieux d'ignorer les pressions sur les touches, puis de vérifier les modificateurs d'événement lorsqu'une lettre est pressée. – Carcigenicate

Répondre

1

Malheureusement, ce n'est pas un comportement standard sur lequel vous pouvez compter. J'ai fait un test rapide sur quelques navigateurs que j'avais installés (IE Edge, IE 11, Chrome 55, tous sur une machine Windows), où les 3 navigateurs répétaient automatiquement l'événement de clavier pour les deux lettres (comme A) et le modificateur touches (comme shift), contrairement à ce que votre navigateur fait.

La gestion cohérente des événements de clavier a toujours été difficile à travers les différents navigateurs, comme documenté par Jan Wolter here et Peter-Paul Koch here. Wolter écrit à propos de la répétition automatique:

Si une touche est maintenue assez longtemps, elle se répète automatiquement et certains événements supplémentaires sont déclenchés lors de chaque répétition automatique. Sur les systèmes Macintosh et Linux, les clés de modification ne sont généralement pas répétées automatiquement, mais sur les systèmes Windows, elles font

puis Wolter poursuit en listant diverses exceptions à cela.

+0

J'utilise Linux, donc c'est logique. Je vous remercie. –