我如何检测当一个方向键被按下?我用这个找到了答案:
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)
}
虽然它适用于所有其他键,但它不适用于方向键(可能是因为浏览器默认情况下应该在这些键上滚动)。
当前回答
与键和ES6。
这为您提供了一个单独的功能,每个方向键,而不使用开关,也适用于2,4,6,8键在NumLock是在numpad。
const element = document.querySelector("textarea"), ArrowRight = k => { console.log(k); }, ArrowLeft = k => { console.log(k); }, ArrowUp = k => { console.log(k); }, ArrowDown = k => { console.log(k); }, handler = { ArrowRight, ArrowLeft, ArrowUp, ArrowDown }; element.addEventListener("keydown", e => { const k = e.key; if (handler.hasOwnProperty(k)) { handler[k](k); } }); <p>Click the textarea then try the arrows</p> <textarea></textarea>
其他回答
如果你使用jquery,你也可以这样做,
$(document).on("keydown", '.class_name', function (event) {
if (event.keyCode == 37) {
console.log('left arrow pressed');
}
if (event.keyCode == 38) {
console.log('up arrow pressed');
}
if (event.keyCode == 39) {
console.log('right arrow pressed');
}
if (event.keyCode == 40) {
console.log('down arrow pressed');
}
});
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;
方向键只能由onkeydown触发,而不是onkeypress。
键码是:
左= 37 Up = 38 右= 39 下降= 40
事件。钥匙== "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/English键盘布局的用户,您应该使用event.code。这将保留物理键的位置,即使导致字符发生变化。
事件。关键是,在德沃夏克和z在艾泽里,让你的游戏无法玩。
const {code} = event
if (code === "KeyW") // KeyA, KeyS, KeyD
最理想的情况是,你还允许按键重新映射,无论玩家处于何种情况,这都对他们有利。
注:事件。箭头的代码也是一样的
关键Mozilla文档
代码Mozilla文档
支持的浏览器
方向键在keyup时触发
$(document).on("keyup", "body", function(e) {
if (e.keyCode == 38) {
// up arrow
console.log("up arrow")
}
if (e.keyCode == 40) {
// down arrow
console.log("down arrow")
}
if (e.keyCode == 37) {
// left arrow
console.log("lefy arrow")
}
if (e.keyCode == 39) {
// right arrow
console.log("right arrow")
}
})
Onkeydown允许ctrl, alt,屎
Onkeyup允许标签,向上箭头,向下箭头,向左箭头,向下箭头