สรุป
เพียงแค่ป้องกันการทำงานของเบราว์เซอร์เริ่มต้น :
window.addEventListener("keydown", function(e) {
if([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
}, false);
คำตอบเดิม
ฉันใช้ฟังก์ชันต่อไปนี้ในเกมของฉันเอง:
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);
e.preventDefault();
ความมหัศจรรย์ที่เกิดขึ้นใน การดำเนินการนี้จะบล็อกการกระทำเริ่มต้นของเหตุการณ์ในกรณีนี้จะย้ายมุมมองของเบราว์เซอร์
หากคุณไม่ต้องการสถานะปุ่มปัจจุบันคุณสามารถปล่อยkeys
และทิ้งการกระทำเริ่มต้นบนปุ่มลูกศร:
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);
โปรดทราบว่าวิธีนี้ยังช่วยให้คุณสามารถลบตัวจัดการเหตุการณ์ได้ในภายหลังหากคุณต้องการเปิดใช้งานการเลื่อนแป้นลูกศรอีกครั้ง:
window.removeEventListener("keydown", arrow_keys_handler, false);
อ้างอิง