Крім того, усі 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
властивості docs та деякі додаткові відомості у цій відповіді .
.key
підтримується у кожному великому розробнику