event.keyCode替代方案

Rus*_*lin 3 javascript firefox firefox-addon dom-events

我正在为Firefox开发虚拟键盘扩展.此扩展的一个功能是将用户按下的键转换为另一个布局.

示例:我需要在Bashkir布局上键入文本,但我的操作系统不支持它.因此,我可以使用此虚拟键盘扩展而不更改系统设置.

在Windows XP上需要它,它不支持多种语言.我曾经event.keyCode检测过按下了哪个键.我使用它是因为尽管系统布局,它仍能检测到密钥代码.

但我在Firefox中错过了如果键盘是非英语布局,event.keyCode使用某些键无法正常工作,即[ ] ; ' , . /\.

如果我输入q密钥,则keyCode返回81,如果我输入俄语й,这是同一个密钥,keyCode也会返回81.但是,如果我输入[密钥,则keyCode返回219,如果我输入俄语х,这是相同的密钥,则keyCode返回0.

keyCode替代方案吗?

Mak*_*yen 14

KeyboardEvents的可用属性在MDN上的链接页面上描述.他们包括:

KeyboardEvent.code似乎是可以为您提供最佳信息的,并且不会被弃用.但是,它只能在Firefox的Nightly,Aurora和Developer Edition中从Firefox 32.0获得.从Firefox 38.0开始,它将在标准版本中提供,或者将在标准版本中提供.

您可以有不同的组合试验charCode,code,key,keyCode,并which得到你想要的信息.如果您希望支持各种Firefox版本,您几乎肯定必须使用不同属性的组合.