f5和t keydown / keypress键码

时间:2012-12-24 20:24:35

标签: firefox

当我按下按键的密钥代码时,我将密钥代码输出到控制台。我记录了两个关键代码:keydown和keypress。

当我按 F5 时,我会收到以下密钥代码:

keydown = 84 ("T")
keypress = 116 ("t")

当我按 t 时,我会收到以下密钥代码:

keydown = 116 ("t")
keypress = 116 ("t")

这只发生在Firefox中。当按下的原始键不相同时,为什么按键键码相同,而keydown代码相似?

1 个答案:

答案 0 :(得分:2)

您确定不会混淆keyCodecharCode吗?

使用QuirksMode底部的结果,我得到了

  • F5
    • keydown:keyCode是116; charCode为0
    • keypress:keyCode为116; charCode为0
    • keydown:keyCode是84; charCode为0
    • keypress:keyCode为0; charCode是116
  • Ť
    • keydown:keyCode是84; charCode为0
    • keypress:keyCode为0; charCode是84

keyCode表示用户按下的实际键盘键,而charCode表示字符的代码点。例如,键 t T 具有相同的keyCode,因为它们来自相同的键,而它们具有不同的charCode,因为它们代表对于不同的角色。

所以为了回答你的问题,你得到的 F5 keydown的输出是84,当插入String.fromCharCode()时输出“T”,而对于keypress是116,这对应于“t”使用String.fromCharCode()

简而言之,请勿在{{1​​}}上使用String.fromCharCode(),因为结果是荒谬的。仅在keyCode上使用它。同样来自QuirksMode,在“特殊键”下

  

如果你需要检测这些密钥,请自己帮忙并搜索他们的keyCode onkeydown / up,并忽略onkeypress和charCode。