我正在开发一个HTML5画布游戏,我会像这样关注/关键:
window.addEventListener('keyup', function(event) {
// handle
});
window.addEventListener('keydown', function(event) {
// handle
});
这适用于我在Safari,Chrome和Firefox上的Macbook Pro上。
然而,我的很多用户都在报告有"粘性密钥" - 他们按一个键开始向上移动,然后释放该密钥,但是' keyup'活动未被接收,他们将不断向上移动,直到他们再次按下并释放向上键以触发另一个" keyup"事件
有谁知道为什么会这样?
我已经完成的事情:
如果窗口在窗口对象上使用事件监听器失去焦点,则重置所有键,用于"模糊"事件。如果用户暂时切换标签或者窗口以某种方式失去焦点,则所有键都将收到一个键盘事件,并且游戏中的所有动作都将停止。
禁用右键单击画布,使用oncontextmenu =' return false;'。我发现右键单击并调出上下文菜单会导致此错误发生。它是我发现重现它的唯一可靠方式 - 即使右键单击禁用,我也很难看到为什么这么多用户会看到这个错误。