Ponadto wszystkie elementy keyCode , które , charCode i keyIdentifier są przestarzałe:
charCode
i keyIdentifier
są funkcjami niestandardowymi.
keyIdentifier
jest usuwany od Chrome 54, a Opera 41.0
keyCode
zwraca 0 po zdarzeniu keypress z normalnymi znakami na FF.
Kluczowa właściwość :
readonly attribute DOMString key
Przechowuje wartość atrybutu klawisza odpowiadającą naciśniętemu klawiszowi
W chwili pisania tego tekstu key
właściwość jest obsługiwana przez wszystkie główne przeglądarki od: Firefox 52, Chrome 55, Safari 10.1, Opera 46. Z wyjątkiem Internet Explorera 11, który ma:
niestandardowe identyfikatory kluczy i nieprawidłowe działanie z AltGraph. Więcej informacji
Jeśli jest to ważne i / lub zgodność ze starszymi wersjami, możesz użyć wykrywania funkcji, jak w poniższym kodzie:
Zauważ, że key
wartość różni się od keyCode
lub which
properties tym, że: zawiera nazwę klucza, a nie jego kod. Jeśli twój program potrzebuje kodów znaków, możesz skorzystać z charCodeAt()
. W przypadku pojedynczych drukowalnych znaków, których możesz użyć charCodeAt()
, jeśli masz do czynienia z kluczami, których wartości zawierają wiele znaków, takich jak ArrowUp
szanse: testujesz klucze specjalne i odpowiednio wykonujesz działania. Więc spróbuj wykonawczych tabelę wartości Keys i odpowiadające im kody charCodeArr["ArrowUp"]=38
, charCodeArr["Enter"]=13
, charCodeArr[Escape]=27
... i tak dalej, proszę spojrzeć na wartości kluczy i ich odpowiednimi kodami
if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
Być może zechcesz rozważyć zgodność z poprzednimi wersjami, tj. Używać starszych właściwości, gdy są dostępne, i tylko wtedy, gdy zostaną upuszczone, przełącz się na nowe:
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;
}
Zobacz także: dokumentacjęKeyboardEvent.code
nieruchomości i więcej szczegółów w tej odpowiedzi .
.key
jest obsługiwany we wszystkich głównych programistach