当我得到按键的按键代码时,我将按键代码输出到控制台。我记录了两个键码:keydown 和 keypress。
当我按F5时,我得到以下键码:
keydown = 84 ("T")
keypress = 116 ("t")
当我按t时,我得到以下键码:
keydown = 116 ("t")
keypress = 116 ("t")
这只发生在 Firefox 中。当按下的原始键不一样时,为什么 keypress 键码相同,并且 keydown 码相似?
当我得到按键的按键代码时,我将按键代码输出到控制台。我记录了两个键码:keydown 和 keypress。
当我按F5时,我得到以下键码:
keydown = 84 ("T")
keypress = 116 ("t")
当我按t时,我得到以下键码:
keydown = 116 ("t")
keypress = 116 ("t")
这只发生在 Firefox 中。当按下的原始键不一样时,为什么 keypress 键码相同,并且 keydown 码相似?
你确定你没有混淆keyCode
吗charCode
?
使用QuirksMode底部的结果,我得到
keyCode
表示用户实际按下的键盘键,而charCode
表示字符的代码点。例如,键t和T相同keyCode
,因为它们来自相同的键,而它们不同charCode
,因为它们代表不同的字符。
所以要回答你的问题,你得到的F5 keydown 的输出是 84,插入时String.fromCharCode()
给出“T”,而 keypress 是 116,对应于使用String.fromCharCode()
.
简而言之,不要使用String.fromCharCode()
on keyCode
,因为结果是荒谬的。只在charCode
. 同样来自QuirksMode,在“特殊键”下
如果您需要检测这些键,请帮自己一个忙并在 onkeydown/up 上搜索它们的 keyCode,并忽略 onkeypress 和 charCode。