keydown事件没有解雇,为什么?
问题描述:
在JavaScript中,我按住了两个键,并且完美启用。当我释放其中一个密钥时,会触发keyup
。到现在为止还挺好。但我仍然拿着一把钥匙,所以为什么打不出来??我需要这个发生在我的比赛中。难道我做错了什么?这是预期的回应吗?有没有解决办法或什么的?keydown事件没有解雇,为什么?
window.addEventListener("keydown",
function (e) {
console.log('down');
}, false);
window.addEventListener('keyup',
function (e) {
console.log('up');
}, false);
答
我看来像你试图做这样的事情:
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!');
}
});
不知道我在下面,但为什么一键再次KEYDOWN大火,已经开了它,你还没有发布它呢? – kinakuta 2014-10-08 17:23:02
Keydown在钥匙掉下时反复发作,但似乎如果他击中另一个钥匙然后进行锁定,第一个钥匙停止发射keydown。按键只发射一次 – juvian 2014-10-08 17:23:50
Keydown反复发射......?呵呵。这对我来说是新闻。 – Katana314 2014-10-08 17:26:01