今天我遇到了一个奇怪的问题:一个以前总是有效的脚本停止工作,因为显然'keyup'在每次'keydown'事件后直接被触发,杀死了一些等待长按键的事件。
经过测试后,我发现我的协同作用对此负有责任。
最后,我找到了解决问题的方法:一个允许我延迟(并收集)某些事件的jQuery扩展,即http://benalman.com/projects/jquery-throttle-debounce-plugin/
$(window).keyup( $.debounce(100, onKeyUp) )
这有点用了,直到我注意到另一个问题:一次多个键。比方说,按“向上”按钮和“向左”按钮 - 然后同时放开两者。 $ .debounce()将同时处理两个keyup事件,让事件只触发一次并导致event.keyCode
只包含一个键而不是两个键。
最简单的解决方案是,检查在触发keyup事件时按下的所有键,而不是依赖event.keyCode
,因为在这种情况下它不完整。
我的问题是:如何才能找到其他按键仍被按下,依赖于keydown / keyup事件?(因为它们不起作用,因为协同作用)
function onKeyUp(event) {
// get all keys pressed
}
是否有某种window
变量跟踪密钥?
有什么想法吗?