Javascript:不同浏览器上的不同keyCodes?

Sen*_*lez 17 javascript keycode

所以我看到一些关于不同浏览器报告不同keyCodes的论坛帖子,但每个人似乎都避免"为什么?".

我试图捕获冒号(:) keyCode,并意识到Firefox报告回e.keyCode 56.虽然Chrome报告回186(我认为这就是它).

是否有一种在所有浏览器中获得正确keyCode的通用方法?

如果它们是相同的键,它们为什么不同?

我会更加好奇是否有一种获得相同按键的国际方式.

谢谢.

Tim*_*own 15

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

有关所有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!");
    }
};
Run Code Online (Sandbox Code Playgroud)


小智 12

请参阅http://unixpapa.com/js/key.html,了解他们为何拥有不同的密钥.我不知道匹配键的国际方式.