Javascript窗口有时不接收密钥

时间:2016-07-18 17:06:11

标签: javascript html5 keyup onkeyup

我正在开发一个HTML5画布游戏,我会像这样关注/关键:

window.addEventListener('keyup', function(event) {
    // handle
});
window.addEventListener('keydown', function(event) {
    // handle
});

这适用于我在Safari,Chrome和Firefox上的Macbook Pro上。

然而,我的很多用户都在报告有"粘性密钥" - 他们按一个键开始向上移动,然后释放该密钥,但是' keyup'活动未被接收,他们将不断向上移动,直到他们再次按下并释放向上键以触发另一个" keyup"事件

有谁知道为什么会这样?

我已经完成的事情:

  • 如果窗口在窗口对象上使用事件监听器失去焦点,则重置所有键,用于"模糊"事件。如果用户暂时切换标签或者窗口以某种方式失去焦点,则所有键都将收到一个键盘事件,并且游戏中的所有动作都将停止。

  • 禁用右键单击画布,使用oncontextmenu =' return false;'。我发现右键单击并调出上下文菜单会导致此错误发生。它是我发现重现它的唯一可靠方式 - 即使右键单击禁用,我也很难看到为什么这么多用户会看到这个错误。

0 个答案:

没有答案