Я предоставляю обновление, поскольку этот вопрос по-прежнему отображается в верхней части результатов поиска Google.
за MDN KeyboardEvent.keyCode
и KeyBoardEvent.charCode
устарели и больше не должны использоваться.
KeyboardEvent
ключи могут быть определены путем доступа к KeyboardEvent.key
, KeyboardEvent.code
и KeyboardEvent.location
свойствам по мере необходимости.
KeyboardEvent.key
возвращает, как правило, то, что вы видите в текстовом редакторе для клавиш вывода и имя для клавиш вывода (в том числе с учетом регистра).
KeyboardEvent.code
возвращает строковое описание ключа.
KeyboardEvent.location
возвращает целое число от 0 до 3, чтобы обозначить область клавиатуры, в которой расположена клавиша (стандартная, левая, правая и цифровая соответственно).
Понимание разницы между этими свойствами может помочь определить, какие из них наиболее подходят для данной ситуации. В случае этого вопроса: event.key
вернет одинаковые выходные данные ("Enter"
) для клавиш «возврат каретки» и «numpad enter», в то время как event.code
вернет "Enter"
и "NumpadEnter"
соответственно.
В этом случае, если вы хотите провести различие между клавишами цифровой клавиатуры и клавиатуры, вы можете использовать event.code
. Если бы вы хотели, чтобы их операции были такими же, event.key
был бы лучшим выбором.
Если вы хотите различать другие клавиши, такие как левая и правая клавиши Ctrl
, вам также следует взглянуть на свойство event.location
.
Я добавляю небольшую игровую площадку для событий клавиатуры, чтобы увидеть разницу между этими свойствами событий. Кредит MDN за предоставление концепции , которую я только слегка изменил ниже:
window.addEventListener("keydown", function(event) {
let str = "key = '" + event.key +
"'   code = '" + event.code + "'" +
"'   location = '" + event.location + "'" ;
let el = document.createElement("span");
el.innerHTML = str + "<br/>";
document.getElementById("output").appendChild(el);
}, true);
#output {
font-family: Arial, Helvetica, sans-serif;
overflow-y: auto;
margin-left: 4em
}
#output span {
line-height: 2em;
}
#output :nth-child(2n) {
color: blue;
}
<!-- Learn about this code on MDN: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code -->
<p>
Press keys on the keyboard to see what the KeyboardEvent's key and code values are for each one.
</p>
<div id="output"></div>