编程语言
首页 > 编程语言> > javascript – 当keydown打开警报时,键盘不会触发

javascript – 当keydown打开警报时,键盘不会触发

作者:互联网

我有两个事件处理程序,一个用于keydown,另一个用于keyup. keydown事件处理程序触发警报消息,但这会阻止keyup事件触发.

您可以在此处看到一个非常简单的示例:http://jsfiddle.net/boblauer/jaGwT/当keydown打开警报时,不会触发密钥,但是当未打开警报时,将触发密钥.这是来自jsfiddle的代码:

var i = 0;
window.addEventListener('keydown', function(e) {
    if (i++ % 2) alert('down');
    console.log('down');
});

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

我有一个支持监听多个键组合的库(例如’d f’),所以当按下一个键时,我需要将它添加到当前按下的键列表中,当一个键被释放时,我需要从列表中删除它.我遇到的问题是,如果我想在同时按下d f时显示警报,我从“当前按下”列表中删除这些键的代码永远不会触发,因为我的密钥处理程序从未被调用过.

我想不出有关这个问题的好工作.有任何想法吗?

解决方法:

警报可防止事件发生.您可以做的是手动触发此功能,因为它无论如何都会发生.

var keyupfunction = function(e){
    alert('up');
    console.log('up');
}

window.addEventListener('keyup', keyupfunction);

window.addEventListener('keydown', function(e) {
    if (i++ % 2) alert('down');
    console.log('down');
    keyupfunction(e);
});

但实际上,你不应该使用警报.它会阻止这些事件,但谁知道它可能会破坏什么.使用自定义的东西.

标签:javascript,onkeyup,onkeydown
来源: https://codeday.me/bug/20190625/1287207.html