当我按下按键的密钥代码时,我将密钥代码输出到控制台。我记录了两个关键代码:keydown和keypress。
当我按 F5 时,我会收到以下密钥代码:
keydown = 84 ("T")
keypress = 116 ("t")
当我按 t 时,我会收到以下密钥代码:
keydown = 116 ("t")
keypress = 116 ("t")
这只发生在Firefox中。当按下的原始键不相同时,为什么按键键码相同,而keydown代码相似?
答案 0 :(得分:2)
您确定不会混淆keyCode
和charCode
吗?
使用QuirksMode底部的结果,我得到了
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。