我有两个事件处理程序,一个用于 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 处理程序永远不会被调用.
我想不出解决这个问题的好方法。有任何想法吗?