是否在按下键时打印该键的名称?
是否可以在按下某个键时获取其名称:
field.addEventListener("keydown", keyDown, false);
function keyDown(event) {
...
}
例如,当按空格键时,我希望获得字符串值:"space",或沿着这些行的东西。有什么简单的方法可以做到这一点吗?或者我需要一个库。
解决方案
您可以获取键代码,但不能获取名称,因为名称因区域性、语言等而异,而JAVASCRIPT不提供任何方法来获取适合当前区域性和语言的区域性和语言特定名称。
所以回答"当按下某个键时,是否可能获得其名称?"IS:不是来自任何内置到JavaScript或浏览器中的东西。您将需要查找表和/或库。请注意,不同的键盘布局可能会提供不同的映射。
keypress
事件为您提供匹配字符的字符代码(在event.charCode
上,您可以像String.fromCharCode(event.charCode)
一样使用它),但不是keydown
,因为并非所有的keydown
都会生成字符(与其他按键不同),而且实际上有时需要一个以上的keydown
才能创建字符。
要获取密钥代码,只需使用:
var keyCode = event.which || event.keyCode || 0;
如果它存在且真实,则使用event.which
;如果它存在且真实,则使用event.keyCode
;如果两者都不存在且真实,则使用0
。大多数浏览器使用which
;许多IE版本使用keyCode
。
因为键"name"可能包括修饰符,所以我要提到事件上也有修饰符标志:event.shiftKey
、event.ctrlKey
、event.altKey
和event.metaKey
。
完成上述操作后,您将看到有人告诉您可以使用String.fromCharCode(keyCode)
来获取密钥代码的字符。这只适用于一小部分键代码,因为键代码不是字符代码。两者之间有少量重叠,这就是为什么人们认为你可以做到这一点。例如,如果您在键盘上按a,在我听说过的任何键盘上,String.fromCharCode(keyCode)
都会显示"A"
(然后您可以使用event.shiftKey
来决定是否将其小写)。但当你遇到英语字母表中26个字母(可能还有标准的10个数字)以外的任何字母时,它很快就会掉下来。
相关文章