Sommaire
Empêchez simplement l' action du navigateur par défaut :
window.addEventListener("keydown", function(e) {
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
Réponse originale
J'ai utilisé la fonction suivante dans mon propre jeu:
var keys = {};
window.addEventListener("keydown",
function(e){
keys[e.keyCode] = true;
switch(e.keyCode){
case 37: case 39: case 38: case 40:
case 32: e.preventDefault(); break;
default: break;
}
},
false);
window.addEventListener('keyup',
function(e){
keys[e.keyCode] = false;
},
false);
La magie opère e.preventDefault();
. Cela bloquera l'action par défaut de l'événement, dans ce cas en déplaçant le point de vue du navigateur.
Si vous n'avez pas besoin des états de bouton actuels, vous pouvez simplement supprimer keys
et simplement supprimer l'action par défaut sur les touches fléchées:
var arrow_keys_handler = function(e) {
switch(e.keyCode){
case 37: case 39: case 38: case 40:
case 32: e.preventDefault(); break;
default: break;
}
};
window.addEventListener("keydown", arrow_keys_handler, false);
Notez que cette approche vous permet également de supprimer le gestionnaire d'événements ultérieurement si vous devez réactiver le défilement des touches fléchées:
window.removeEventListener("keydown", arrow_keys_handler, false);
Références