我如何检测当一个方向键被按下?我用这个找到了答案:
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)
}
虽然它适用于所有其他键,但它不适用于方向键(可能是因为浏览器默认情况下应该在这些键上滚动)。
当前回答
这是短的。
函数IsArrows (e) { return (e.keyCode >= 37 && e.keyCode <= 40); }
其他回答
可能是最简洁的表述:
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.c iwhich, e.c arcode和window。事件而不是e),但它们不应该是必要的。你可以在http://www.asquare.net/javascript/tests/KeyCode.html上尝试其中的大部分。 注意这个事件。keycode在Firefox中不与onkeypress一起工作,但它与onkeydown一起工作。
我是这样做的:
var leftKey = 37, upKey = 38, rightKey = 39, downKey = 40;
var keystate;
document.addEventListener("keydown", function (e) {
keystate[e.keyCode] = true;
});
document.addEventListener("keyup", function (e) {
delete keystate[e.keyCode];
});
if (keystate[leftKey]) {
//code to be executed when left arrow key is pushed.
}
if (keystate[upKey]) {
//code to be executed when up arrow key is pushed.
}
if (keystate[rightKey]) {
//code to be executed when right arrow key is pushed.
}
if (keystate[downKey]) {
//code to be executed when down arrow key is pushed.
}
function checkArrowKeys(e){
var arrs= ['left', 'up', 'right', 'down'],
key= window.event? event.keyCode: e.keyCode;
if(key && key>36 && key<41) alert(arrs[key-37]);
}
document.onkeydown= checkArrowKeys;
这是短的。
函数IsArrows (e) { return (e.keyCode >= 37 && e.keyCode <= 40); }
我也一直在寻找这个答案,直到我看到这篇文章。
我已经找到了另一个解决方案,知道不同的钥匙的键码,礼貌的我的问题。我只是想分享我的解决方案。
只需使用keyup/keydown事件在控制台/警报中写入值,使用event. keycode相同。像- - - - - -
console.log(event.keyCode)
// or
alert(event.keyCode)
——rupam