繁体   English   中英

按下键盘提示时无法触发键盘提示

[英]Keyup not firing when keydown opens an alert

我有两个事件处理程序,一个用于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);
});

但实际上,您不应该使用警报。 它可以防止这些事件,但是谁知道它可能还会破坏什么。 请改用自定义内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM