当 keydown 打开警报时,Keyup 不会触发

2023-11-24

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

您可以在这里看到一个非常简单的示例:http://jsfiddle.net/boblauer/jaGwT/当 keydown 打开警报时,不会触发 keyup,但当未打开警报时,会触发 keyup。这是来自 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 时显示警报,则从“当前按下的”列表中删除这些键的代码永远不会触发,因为我的 keyup 处理程序永远不会被调用。

我想不出解决这个问题的好方法。有任何想法吗?


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

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);
});

但实际上,您不应该使用警报。它可以防止这些事件发生,但谁知道它还会破坏什么。使用自定义的东西来代替。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 keydown 打开警报时,Keyup 不会触发 的相关文章

随机推荐