Comment attribuer une mise en évidence du clavier à un canevas HTML en utilisant jquery?
Je me suis mise en œuvre d'un jeu à l'aide de Javascript, jquery, et la balise Canvas. Comment puis-je empêcher le navigateur de traitement raccourcis clavier lorsque la balise canvas a le focus? J'ai essayé de l'événement.stopPropagation() et il n'a pas d'effet.
Je peux ramasser les événements de clavier. Cependant, lorsque l'utilisateur appuie sur la barre d'espace, la page défile vers le bas dans Firefox. La même chose se passe avec les touches fléchées.
source d'informationauteur Steve Hanov
Vous devez vous connecter pour publier un commentaire.
La racine du problème est que par défaut le navigateur ne prend pas en faire de la toile "peut recevoir le focus". La meilleure solution que je pouvais venir est de définir la
tabindex
sur la toile:Si pour quelque raison vous ne pouvez pas définir la
tabindex
vous pouvez également faire de la toile "peut recevoir le focus", le réglagecontentEditable
vrai:C'est la solution que j'ai développée à l'origine, mais à mon avis c'est un peu hackier que le
tabindex
option.Une autre chose à considérer est que les navigateurs ont tendance à décrire le contenu les éléments modifiables avec une bordure. Cela peut être rebutant pour certains utilisateurs. Heureusement, vous pouvez vous débarrasser de celui-ci avec ce peu de css:
J'ai testé les deux solutions en Chrome 3/4/5 et FireFox 3.0/3.5/3.6 sur Windows XP, Mac OSX et Linux. Voici un exemple de travail: http://xavi.co/static/so-canvas-keyboard.html
Essayer
event.preventDefault();
. Il y a aussikeypress
keydown
etkeyup
événements... vous pouvez essayer chacun d'eux pour voir ce qui fonctionne.