Кроме того, все 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/…