我有两个事件处理程序,一个用于keydown,一个用于keyup。 keydown事件处理程序触发警报消息,但这会阻止keyup事件的触发。
您可以在此处查看一个非常简单的示例:http://jsfiddle.net/boblauer/jaGwT/ 当keydown打开警报时,keyup不会被触发,但当没有打开警报时,keyup会被触发。以下是来自jsfiddle的代码:
我有一个支持监听多个键组合(例如 'd + f')的库,所以当按下一个键时,我需要将其添加到当前按下的键列表中,当释放该键时,我需要从该列表中将其删除。 我遇到的问题是,如果我想要在同时按下 d+f 时显示警报,则从“当前按下”列表中删除这些键的代码永远不会触发,因为我的 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 处理程序从未被调用。
我想不出解决此问题的好方法。 有什么想法吗?
alert()
会阻塞 - 你不应该设计你的网站围绕着使用alert()
...也许可以自己编写或使用某种对话框。 - ahren