Tóm lược
Chỉ cần ngăn hành động mặc định của trình duyệt:
window.addEventListener("keydown", function(e) {
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
Câu trả lời ban đầu
Tôi đã sử dụng chức năng sau trong trò chơi của riêng mình:
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);
Điều kỳ diệu xảy ra trong e.preventDefault();
. Điều này sẽ chặn hành động mặc định của sự kiện, trong trường hợp này là di chuyển quan điểm của trình duyệt.
Nếu bạn không cần các trạng thái nút hiện tại, bạn có thể chỉ cần thả keys
và chỉ cần loại bỏ hành động mặc định trên các phím mũi tên:
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);
Lưu ý rằng phương pháp này cũng cho phép bạn xóa trình xử lý sự kiện sau này nếu bạn cần bật lại thao tác cuộn phím mũi tên:
window.removeEventListener("keydown", arrow_keys_handler, false);
Người giới thiệu