如何检测何时按下了其中一个箭头键?我用这个来找出:
function checkKey(e) {
    var event = window.event ? window.event : e;
    console.log(event.keyCode)
}
虽然它适用于所有其他键,但它不适用于箭头键(可能是因为浏览器默认应该在这些键上滚动)。
如何检测何时按下了其中一个箭头键?我用这个来找出:
function checkKey(e) {
    var event = window.event ? window.event : e;
    console.log(event.keyCode)
}
虽然它适用于所有其他键,但它不适用于箭头键(可能是因为浏览器默认应该在这些键上滚动)。
箭头键只能由 触发onkeydown,而不是由 触发onkeypress。
密钥代码是:
上键上下调用功能。每个键都有不同的代码。
document.onkeydown = checkKey;
function checkKey(e) {
    e = e || window.event;
    if (e.keyCode == '38') {
        // up arrow
    }
    else if (e.keyCode == '40') {
        // down arrow
    }
    else if (e.keyCode == '37') {
       // left arrow
    }
    else if (e.keyCode == '39') {
       // right arrow
    }
}
更新更干净:使用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 和zAzerty 上,使您的游戏无法播放。
const {code} = event
if (code === "KeyW") // KeyA, KeyS, KeyD
最理想的情况是,您还允许重新映射密钥,无论玩家处于何种情况,这都会使他们受益。
PSevent.code与箭头相同
可能是最简洁的公式:
document.onkeydown = function(e) {
    switch (e.keyCode) {
        case 37:
            alert('left');
            break;
        case 38:
            alert('up');
            break;
        case 39:
            alert('right');
            break;
        case 40:
            alert('down');
            break;
    }
};
演示(感谢用户 Angus Grant):http : //jsfiddle.net/angusgrant/E3tE6/
这应该跨浏览器工作。如果有浏览器不起作用,请发表评论。
还有其他方法可以获取关键代码(e.which、e.charCode 和 window.event 而不是 e),但它们不是必需的。您可以在http://www.asquare.net/javascript/tests/KeyCode.html 上尝试其中的大部分。请注意 event.keycode 不适用于 Firefox 中的 onkeypress,但它适用于 onkeydown。
使用keydown, 不适keypress用于不可打印的键,例如箭头键:
function checkKey(e) {
    e = e || window.event;
    alert(e.keyCode);
}
document.onkeydown = checkKey;
我找到的最好的 JavaScript 关键事件参考(例如,在 quirksmode 下大吃一惊)在这里:http : //unixpapa.com/js/key.html