keydown事件没有解雇,为什么?

时间:2014-10-08 17:20:48

标签: javascript events

在JavaScript中,我按下两个键,keydown被完全解雇。当我释放其中一个键时,keyup被触发。到现在为止还挺好。但我仍然按下一个键,为什么keydown没有被解雇?我需要在游戏中发生这种情况。难道我做错了什么?这是预期的反应吗?是否有工作或其他什么?

window.addEventListener("keydown",
function (e) {
    console.log('down');
}, false);

window.addEventListener('keyup',
function (e) {
    console.log('up');
}, false);

1 个答案:

答案 0 :(得分:0)

让我觉得你喜欢这样做:



var down = false;
var up = false;
document.body.addEventListener('keydown', function (e) {
    if(e.which === 40) {
        down = true;
    }
    
    if(e.which === 38) {
        up = true;
    }
});

document.body.addEventListener('keyup', function (e) {
    if(e.which === 40) {
        down = false;
    }
    
    if(e.which === 38) {
        up = false;
    }
    
    // logic here for one but not the other
    if(down && !up) {
        alert('down but not up!');
    }
});