Javascript 如何转换google chrome';你认为这是合理的吗?

Javascript 如何转换google chrome';你认为这是合理的吗?,javascript,google-chrome,compatibility,Javascript,Google Chrome,Compatibility,所以我在做一个脚本来捕捉按键。这并不是那么容易,因为似乎没有一个浏览器真正跟随它 在firefox中,我可以在keyCode属性中观察键代码(确定特定的物理按钮),而在.charCode中观察字符代码(表示键的字母)。这不是 当我尝试在谷歌浏览器上测试时,我观察到了不同的行为。Google chrome将所有的keyCode、charCode和设置为字母值(如果存在)。但是,keyIdentifier属性中有一个常量值。W3没有提到这样的属性,但我真的很乐意利用它 我如何转换keyIdentif

所以我在做一个脚本来捕捉按键。这并不是那么容易,因为似乎没有一个浏览器真正跟随它

在firefox中,我可以在
keyCode
属性中观察键代码(确定特定的物理按钮),而在
.charCode
中观察字符代码(表示键的字母)。这不是

当我尝试在谷歌浏览器上测试时,我观察到了不同的行为。Google chrome将所有的
keyCode
charCode
设置为字母值(如果存在)。但是,
keyIdentifier
属性中有一个常量值。W3没有提到这样的属性,但我真的很乐意利用它


我如何转换
keyIdentifier
值(对于A it's
U+0041
),使其与Firefox中出现的
keyCode
值一致(对于A it's
65
)?

我还没有处理Firefox或Chrome的键盘事件,但从您发布的示例来看,Chrome等seams为您提供了字母“A”(其中数字部分为十六进制)的Unicode表示形式,而Firefox为您提供了以10为基数的相同数字(十进制)。因此,要使它们彼此一致,只需将Firefox数字转换为十六进制,这样您就可以在两种浏览器中使用Unicode表示法。

实际代码是:

//Google chrome retardedness
if(event.keyIdentifier) {
  keyCode = parseInt(event.keyIdentifier.substr(2), 16);
}
//not that the other browsers are any closer to something systematic and logical
else {
  keyCode = event.keyCode;
}