代码之家  ›  专栏  ›  技术社区  ›  Senica Gonzalez

javascript:不同浏览器上的不同键码?

  •  17
  • Senica Gonzalez  · 技术社区  · 14 年前

    所以我在论坛上看到了一些关于不同浏览器的帖子,它们报告了不同的密码,但是每个人似乎都避免了“为什么?”.

    我试图捕获冒号(:)键代码,发现火狐报告了e.keycode 56。当Chrome报告186年的时候(我想是这样)。

    有没有一种通用的方法可以在所有浏览器中获得正确的密钥代码?

    如果它们是同一把钥匙,为什么它们会不同呢?

    我更想知道是否有一种国际性的方法来获得同样的按键。

    谢谢。

    4 回复  |  直到 8 年前
        1
  •  12
  •   Plaudit Design    14 年前

    http://unixpapa.com/js/key.html 为了解释为什么他们有不同的钥匙。我不知道国际上匹配钥匙的方法。

        2
  •  14
  •   Tim Down    11 年前

    这取决于您是否对用户按下的物理键或用户键入的字符感兴趣。如果这是你所追求的角色,你可以在所有主要浏览器中可靠地获得它(使用 keypress 事件的 which 在大多数浏览器或 keyCode 在ie<=8),但仅在 按键 事件。如果你在找钥匙,用 keydown keyup 事件和检查 键码 属性,尽管浏览器之间的键代码映射确实有些不同。

    所有与javascript键相关的事件的一个很好的解释和参考可以在 http://unixpapa.com/js/key.html .

    要在所有主要浏览器中可靠地检测用户键入冒号字符,可以执行以下操作:

    document.onkeypress = function(e) {
        e = e || window.event;
        var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
        if (charCode && String.fromCharCode(charCode) == ":") {
            alert("Colon!");
        }
    };
    
        3
  •  2
  •   kidconcept    8 年前

    这是个老问题。现代的方法是使用event.key。见 MDN Key

        4
  •  0
  •   Community CDub    8 年前

    我认为您应该使用JavaScript来获取“:”字符的键代码,这样脚本就可以知道在特定环境中是什么。有人问过类似的问题 here, in stackoverflow .

    推荐文章