Sommario
Impedisci semplicemente l' azione del browser predefinito :
window.addEventListener("keydown", function(e) {
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
Risposta originale
Ho usato la seguente funzione nel mio gioco:
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 magia accade dentro e.preventDefault();. Questo bloccherà l'azione predefinita dell'evento, in questo caso spostando il punto di vista del browser.
Se non hai bisogno degli stati del pulsante corrente, puoi semplicemente rilasciare keyse scartare l'azione predefinita sui tasti freccia:
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);
Tieni presente che questo approccio ti consente anche di rimuovere il gestore eventi in un secondo momento se devi riattivare lo scorrimento con i tasti freccia:
window.removeEventListener("keydown", arrow_keys_handler, false);
Riferimenti