如何检测何时按下了其中一个箭头键?我用这个来找出:
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