Javascript keydown:检查箭头和减号,为Firefox解决问题

时间:2014-11-22 01:45:40

标签: javascript jquery firefox keypress onkeydown

我正在使用javascript开发一个web应用程序

  • 如果按下右箭头,我们会进入下一个级别。
  • 如果按下减号,我们会减少难度。
  • 如果按空格键,我们会暂停。

因为我也想检查箭头,我不能使用按键事件,所以我使用了keydown事件。代码的简化部分(使用jQuery)如下。

$(document).keydown(dealWithKeyDown);
function dealWithKeyDown(evt) {
    if (evt.which == 39) // Right arrow.
        nextLevel();
    if (evt.which == 189) // Minus sign.
        reduceDifficulty();
    if (evt.which == 32) // Space.
        pause();
}

我现在遇到的问题是它在Firefox中不起作用。在FF中,减号的键码是173而不是189.(并且还有更多的差异。)有人可以建议一个简单/优雅的解决方案吗?

我能想到的最简单的解决方法是使用' evt.key'财产,但' evt.key'在Chrome中未定义,而对于空格按钮,IE提供了' evt.key =="空格键"'当Firefox提供' evt.key ==" "'是的。这是一场不一致的噩梦。

1 个答案:

答案 0 :(得分:1)

您可以检查用户代理并相应地设置数字,然后使用您所取的var而不是数字!

var key = (/Firefox/i.test(navigator.userAgent)) ? 173 : 189 ;

然后:

if (evt.which == key)

你可以为你的所有数字/可能性做到这一点