2010-04-17 4 views
1

Je fais un jeu qui implique, comme tous les jeux, des appuis sur les touches. Seules les flèches gauche et droite et la barre d'espace. Ils fonctionnent, mais le navigateur est prédéfini pour faire défiler vers la gauche, la droite ou sauter sur ces touches. Est-il possible de dissocier ces clés dans le code? Merci.Unbind Key Presses

Répondre

1

vous devriez pouvoir empêcher le comportement par défaut du navigateur en renvoyant false après avoir appuyé sur la touche. Cependant, en fonction de la façon dont vous interceptez les événements clés, il semble fonctionner différemment sur différents navigateurs et même pour différents types de clés (touches de commande alpha vs 'command')

jquery preventDefault et stopPropagation peuvent également fonctionner, les commentaires à la en bas de cette documentation donnent beaucoup de bons conseils http://api.jquery.com/event.preventDefault/

sur la base des informations là, je mets ce petit bout de code ensemble, semble arrêter la barre d'espace et vers le bas/haut flèches de se déplacer la barre de défilement à la fois opéra et Firefox

essayez ce code (jquery nécessaire) dans firefox avec firebug console activé

$(document).bind('keydown, keypress', function(event) { 
    console.debug(event.keyCode + " - " + event.which); 
    // event.preventDefault(); 
    return false; 
}); 
+0

Je trouve cela fonctionne dans tous les navigateurs, je l'ai essayé, sauf IE: window.onkeydown = function (e) { \t if (e.keyCode == 32 || e.keyCode == 37 || e.keyCode == 39) { \t \t return false; \t} } Est-ce que quelqu'un sait un moyen de faire cela dans IE? Même si c'est seulement IE, je connais un moyen de contourner ce problème. J'ai juste besoin d'un moyen de faire la même chose dans Internet Explorer. – Doug

+0

ce poste se décompose http://www.quirksmode.org/js/keys.html consultez le formulaire 'Test' au fond et voir la source pour voir comment ils traitent des événements clés - semble fonctionner IE8 , Firefox et Chrome – house9