javascript - 按下时打印键的名称?

标签 javascript keypress dom-events

是否可以在按下时获取键的名称:

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.shiftKeyevent.ctrlKeyevent.altKeyevent.metaKey

你会看到有人告诉你可以在完成上述操作后使用 String.fromCharCode(keyCode) 来获取键码的字符。这仅适用于极少数键码,因为键码不是字符码。两者之间有少量重叠,这就是人们认为你可以做到的原因。例如,如果你在键盘上按 a,在我听说过的任何键盘上 String.fromCharCode(keyCode) 都会给你 "A" (然后你可以使用 event.shiftKey 来决定是否将其设为小写)。但是,当您进入超过 26 个英文字母(可能还有标准的十位数字)以外的任何内容时,它会很快下降。

关于javascript - 按下时打印键的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37725403/

相关文章:

Javascript 在文本框中的预定义文本后仅验证数字

Chrome 扩展中的 JavaScript - 创建 Keydown 事件

javascript - JavaScript 中的 document.unload 覆盖或链接最后一个定义?

javascript - 为链接点击创建简单的监听器

javascript - AngularJS观察div大小

javascript - 仅从 firebase 导入 auth 和 firestore

java - Android模拟按键

jquery - 主干点击事件中断

javascript - JavaScript 中的原始包装器行为

javascript - 获取 JQuery 数据 - 包含带空格的值