Кроме того, все keyCode , которые , charCode и keyIdentifier устарели:
charCodeи keyIdentifierявляются нестандартными функциями.
keyIdentifierудаляется с Chrome 54, а Opera 41.0
keyCodeвозвращает 0 при нажатии клавиши с обычными символами на FF.
Ключевое свойство :
readonly attribute DOMString key
Содержит значение ключевого атрибута, соответствующее нажатой клавише
На момент написания этой статьи keyсвойство поддерживается всеми основными браузерами, начиная с: Firefox 52, Chrome 55, Safari 10.1, Opera 46. За исключением Internet Explorer 11, который имеет:
нестандартные идентификаторы ключей и неправильное поведение с AltGraph. Дополнительная информация
Если это важно и / или имеет обратную совместимость, вы можете использовать обнаружение функций, как в следующем коде:
Обратите внимание, что keyзначение отличается от keyCodeили whichсвойств в этом: оно содержит имя ключа, а не его код. Если вашей программе нужны коды символов, вы можете использовать charCodeAt(). Для одиночных печатных символов вы можете использовать charCodeAt(), если вы имеете дело с ключами, значения которых содержат несколько символов, например, ArrowUp
вероятность: вы проверяете специальные ключи и принимаете соответствующие меры. Так попробовать реализовать таблицу значений " ключи и соответствующие им коды charCodeArr["ArrowUp"]=38, charCodeArr["Enter"]=13, charCodeArr[Escape]=27... и так далее, пожалуйста , обратите внимание на ключевые ценности и их соответствующих кодов
if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
Может быть, вы захотите рассмотреть возможность прямой совместимости, то есть использовать устаревшие свойства, пока они доступны, и только после сброса переключаться на новые:
if(e.which || e.charCode || e.keyCode ){
var characterCode = e.which || e.charCode || e.keyCode;
}else if (e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
var characterCode = 0;
}
См. Также: документацию по KeyboardEvent.codeсвойствам и некоторые дополнительные сведения в этом ответе .
.keyподдерживается во всех основных браузерах developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/…