情况: 我有一个 keydown
处理程序,使用了 switch
来检测按下的键,这是相当标准的代码,但是当任何一个键被按住时,keydown
事件会重复触发(而不仅是在实际按下时触发一次)。
问题所在: 我想让 keydown
监听器保持激活状态,即能够检测到同时按下多个键,但只希望每个 keydown
事件触发一次。我将根据按下和松开之间的时间,在 keyup
上执行某些操作,但由于重复触发事件,这个计时被搞砸了。
我尝试过的方法: 我目前正在维护一个已按下的 keyCode
列表,并在我的 keydown
处理程序中对其进行检查,以防止默认行为发生。然而,事件仍然经常触发,我担心这种解决方案的效率/优雅性。
实际问题: 有没有好的方法可以限制 keydown
事件的触发仅在物理按下按键时触发,或仅监听特定的 keyCode
?