Zusammenfassung
Verhindern Sie einfach die Standard- Browseraktion:
window.addEventListener("keydown", function(e) {
// space and arrow keys
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
Ursprüngliche Antwort
Ich habe die folgende Funktion in meinem eigenen Spiel verwendet:
var keys = {};
window.addEventListener("keydown",
function(e){
keys[e.keyCode] = true;
switch(e.keyCode){
case 37: case 39: case 38: case 40: // Arrow keys
case 32: e.preventDefault(); break; // Space
default: break; // do not block other keys
}
},
false);
window.addEventListener('keyup',
function(e){
keys[e.keyCode] = false;
},
false);
Die Magie passiert in e.preventDefault();
. Dadurch wird die Standardaktion des Ereignisses blockiert. In diesem Fall wird der Ansichtspunkt des Browsers verschoben.
Wenn Sie den aktuellen Schaltflächenstatus nicht benötigen, können Sie keys
die Standardaktion auf den Pfeiltasten einfach löschen und verwerfen:
var arrow_keys_handler = function(e) {
switch(e.keyCode){
case 37: case 39: case 38: case 40: // Arrow keys
case 32: e.preventDefault(); break; // Space
default: break; // do not block other keys
}
};
window.addEventListener("keydown", arrow_keys_handler, false);
Beachten Sie, dass Sie mit diesem Ansatz den Ereignishandler später auch entfernen können, wenn Sie das Scrollen mit der Pfeiltaste wieder aktivieren müssen:
window.removeEventListener("keydown", arrow_keys_handler, false);
Verweise