event.key === "ArrowRight"...
更新更简洁:使用event.key。没有更多的任意数字代码!如果您正在编译或知道您的用户都在使用现代浏览器,请使用它!
node.addEventListener('keydown', function(event) {
const key = event.key; // "ArrowRight", "ArrowLeft", "ArrowUp", or "ArrowDown"
});
详细处理:
switch (event.key) {
case "ArrowLeft":
// Left pressed
break;
case "ArrowRight":
// Right pressed
break;
case "ArrowUp":
// Up pressed
break;
case "ArrowDown":
// Down pressed
break;
}
现代开关处理:
const callback = {
"ArrowLeft" : leftHandler,
"ArrowRight" : rightHandler,
"ArrowUp" : upHandler,
"ArrowDown" : downHandler,
}[event.key]
callback?.()
注意:旧属性(.keyCode 和 .which)已弃用。
"w", "a", "s", "d" 方向,使用event.code
为了支持使用非 qwerty/英文键盘布局的用户,您应该改用 event.code。这将保留物理键位置,即使结果字符发生变化。
event.key 在 Dvorak 上将是 ,,在 Azerty 上将是 z,使您的游戏无法玩。
const {code} = event
if (code === "KeyW") // KeyA, KeyS, KeyD
最理想的情况是,您还允许重新映射键,这对玩家有利,无论他们的情况如何。
附: event.code 是相同的箭头
key Mozilla Docs
code Mozilla Docs
Supported Browsers