【发布时间】:2012-04-16 03:41:14
【问题描述】:
我想根据键盘上按下的键来设置事件处理程序。这对于常见的键盘字母(0-9、A-Z 等)来说是相当简单的,因为它们在键盘上的位置在所有键盘上几乎相同,并且键码可用于识别按下的键。 (使用event.which())
但是,我想设置处理程序,以便我可以根据它们在键盘上的位置来识别键。例如,美国 (:/;) 与瑞典语 (Ö/ö) 位于同一物理位置,但我希望能够为键盘上的该位置设置一个唯一的处理程序。
在英语中,按“;” event.which() 返回 59
在 Swe 中,按“ö”event.which() 返回 246
并且它们都属于键盘上的相同物理位置。
我正在寻找一种解决方案,让这个物理位置具有唯一 ID。
这甚至可能吗(不使用可以检测当前语言环境然后将键映射到具有一些内部 id 等的目标语言环境的东西......)。
我相信有几种复杂的方法可以解决这个问题,但我对解决这个问题的最简单方法感兴趣。任何预先编写的库都乐意接受。
【问题讨论】:
-
event.which() 正如我上面提到的,我相信它包含 event.keyCode() 和 event.charCode(),还有其他可能有用的属性/方法吗?
-
共有三个独立的事件:
keydown、keypress和keyup。keydown和keyup的工作方式非常相似,并且报告有关物理键的信息。keypress与输入的字符有关。因此,您可以从每个人那里获得不同的信息。 JavaScript 关键事件的权威资源是unixpapa.com/js/key.html。
标签: javascript keyboard dom-events keyboard-events