Javascript键下:检查箭头和减号,Firefox的解决方法



我正在开发一个带有javascript的Web应用程序,其中

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

因为我也想检查箭头,所以我不能使用按键事件,所以我使用键向下事件。简化的代码部分(使用 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=="为真。这是一场不一致的噩梦。

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

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

然后:

if (evt.which == key)

您可以对所有数字/可能性执行此操作

相关内容

  • 没有找到相关文章

最新更新