获取当前按下的键列表,whitout keyup / keydown

时间:2013-05-16 11:50:56

标签: javascript jquery jquery-plugins onkeydown onkeyup

今天我遇到了一个奇怪的问题:一个以前总是有效的脚本停止工作,因为显然'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变量跟踪密钥?

有什么想法吗?

0 个答案:

没有答案