event.keyCode 备选方案
event.keyCode alternative
我正在为 Firefox 开发一个虚拟键盘扩展。此扩展的功能之一是将用户按下的键转换为另一种布局。
示例:我需要在 Bashkir 布局上键入文本,但我的 OS 不支持它。所以,我可以使用这个虚拟键盘扩展而不更改系统设置。
在 Windows 不支持多种语言的 XP 上需要它。
我使用 event.keyCode
来检测按下了哪个键。我使用它是因为它可以检测到系统布局中的关键代码。
但我错过了在 Firefox 中如果键盘是非英语布局,event.keyCode
不能正确使用某些键,即 [ ] ; ' , . / 和 \.
如果我输入 q 键,keyCode
returns 81 如果我输入俄语 й ,这是同一个键,keyCode
也 returns 81
。但是如果我输入 [ 键,keyCode
returns 219
如果我输入俄语 х ,这是同一个键,keyCode
returns 0
.
是否存在 keyCode
替代方案?
KeyboardEvents are described on the linked page on MDN 的可用属性。它们包括:
- KeyboardEvent.altKey
- KeyboardEvent.charCode(已弃用)
- KeyboardEvent.code
- KeyboardEvent.ctrlKey
- KeyboardEvent.isComposing
- KeyboardEvent.key
- KeyboardEvent.keyCode(已弃用)
- KeyboardEvent.location
- KeyboardEvent.metaKey
- KeyboardEvent.shiftKey
- KeyboardEvent.which(已弃用)
KeyboardEvent.code 似乎可以为您提供最好的信息,并且没有被弃用。但是,它只能从 Firefox 32.0 的 Nightly、Aurora 和 Developer Edition 中获得。从 Firefox 38.0 及更高版本开始,它已经或将在标准发行版中可用。
您可能需要尝试 charCode
、code
、key
、keyCode
和 which
的各种组合以获得您想要的信息.如果您希望支持范围广泛的 Firefox 版本,您几乎肯定必须使用不同属性的组合。
我正在为 Firefox 开发一个虚拟键盘扩展。此扩展的功能之一是将用户按下的键转换为另一种布局。
示例:我需要在 Bashkir 布局上键入文本,但我的 OS 不支持它。所以,我可以使用这个虚拟键盘扩展而不更改系统设置。
在 Windows 不支持多种语言的 XP 上需要它。
我使用 event.keyCode
来检测按下了哪个键。我使用它是因为它可以检测到系统布局中的关键代码。
但我错过了在 Firefox 中如果键盘是非英语布局,event.keyCode
不能正确使用某些键,即 [ ] ; ' , . / 和 \.
如果我输入 q 键,keyCode
returns 81 如果我输入俄语 й ,这是同一个键,keyCode
也 returns 81
。但是如果我输入 [ 键,keyCode
returns 219
如果我输入俄语 х ,这是同一个键,keyCode
returns 0
.
是否存在 keyCode
替代方案?
KeyboardEvents are described on the linked page on MDN 的可用属性。它们包括:
- KeyboardEvent.altKey
- KeyboardEvent.charCode(已弃用)
- KeyboardEvent.code
- KeyboardEvent.ctrlKey
- KeyboardEvent.isComposing
- KeyboardEvent.key
- KeyboardEvent.keyCode(已弃用)
- KeyboardEvent.location
- KeyboardEvent.metaKey
- KeyboardEvent.shiftKey
- KeyboardEvent.which(已弃用)
KeyboardEvent.code 似乎可以为您提供最好的信息,并且没有被弃用。但是,它只能从 Firefox 32.0 的 Nightly、Aurora 和 Developer Edition 中获得。从 Firefox 38.0 及更高版本开始,它已经或将在标准发行版中可用。
您可能需要尝试 charCode
、code
、key
、keyCode
和 which
的各种组合以获得您想要的信息.如果您希望支持范围广泛的 Firefox 版本,您几乎肯定必须使用不同属性的组合。