是否可以在按下时获取键的名称:
field.addEventListener("keydown", keyDown, false);
function keyDown(event) {
...
}
例如,当按下空格键时,我想获取字符串值:“space”,或类似的内容。有没有一种简单的方法可以做到这一点,或者我需要一个图书馆。
最佳答案
您可以获得键码,但不能获取名称,因为名称因文化、语言等而异,而 JavaScript 不提供任何获取文化和语言特定名称的方法适合当前的文化和语言。
所以回答“是否有可能在按下键时获取键的名称?”是:不是来自 JavaScript 或浏览器中内置的任何内容。您将需要查找表和/或库。请注意,不同的键盘布局可能会提供不同的映射。
keypress
事件为您提供匹配字符的字符代码(在 event.charCode
上,您可以使用像 String.fromCharCode(event.charCode)
),但不是 keydown
因为不是所有的 keydown
都会生成字符(与其他按键不同),事实上,有时需要不止一次 keydown
来创建一个 Angular 色。
要获取键码,只需使用:
var keyCode = event.which || event.keyCode || 0;
如果存在且为真,将使用 event.which
,如果存在且为真,则使用 event.keyCode
,如果两者均不存在,则使用 0
存在且真实。大多数浏览器使用which
;许多版本的 IE 使用 keyCode
。
由于键“名称”可能包含修饰符,我会提到事件上也有可用的修饰符标志:event.shiftKey
、event.ctrlKey
、event.altKey
和 event.metaKey
。
你会看到有人告诉你可以在完成上述操作后使用 String.fromCharCode(keyCode)
来获取键码的字符。这仅适用于极少数键码,因为键码不是字符码。两者之间有少量重叠,这就是人们认为你可以做到的原因。例如,如果你在键盘上按 a,在我听说过的任何键盘上 String.fromCharCode(keyCode)
都会给你 "A"
(然后你可以使用 event.shiftKey
来决定是否将其设为小写)。但是,当您进入超过 26 个英文字母(可能还有标准的十位数字)以外的任何内容时,它会很快下降。
关于javascript - 按下时打印键的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37725403/