Darüber hinaus , dass alle keyCode , die , charCode und keyIdentifier sind veraltet:
charCodeund keyIdentifiersind Nicht-Standard - Funktionen.
keyIdentifierwird ab Chrome 54 entfernt und Opera 41.0
keyCodegibt bei einem Tastendruckereignis mit normalen Zeichen in FF 0 zurück.
Die Schlüsseleigenschaft :
readonly attribute DOMString key
Enthält einen Schlüsselattributwert, der der gedrückten Taste entspricht
Zum Zeitpunkt dieses Schreibens wird die keyEigenschaft von allen gängigen Browsern ab Firefox 52, Chrome 55, Safari 10.1, Opera 46 unterstützt. Mit Ausnahme von Internet Explorer 11 mit:
nicht standardmäßigen Schlüsselkennungen und falschem Verhalten mit AltGraph. Weitere Informationen
Wenn dies wichtig und / oder abwärtskompatibel ist, können Sie die Funktionserkennung wie im folgenden Code verwenden:
Beachten Sie, dass sich der keyWert von keyCodeoder den whichEigenschaften darin unterscheidet: Er enthält den Namen des Schlüssels und nicht seinen Code. Wenn Ihr Programm Zeichencodes benötigt, können Sie diese verwenden charCodeAt(). Für einzelne druckbare Zeichen können Sie verwenden charCodeAt(), wenn Sie mit Schlüsseln arbeiten, deren Werte mehrere Zeichen enthalten, wie es ArrowUp
wahrscheinlich ist: Sie testen auf Sonderschlüssel und ergreifen entsprechende Maßnahmen. So versuchen , eine Tabelle von Schlüsseln Werte der Umsetzung und ihre entsprechenden Codes charCodeArr["ArrowUp"]=38, charCodeArr["Enter"]=13, charCodeArr[Escape]=27... und so weiter, bitte einen Blick auf nehmen Schlüsselwerte und ihre entsprechenden Codes
if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
/* As @Leonid suggeted */
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
/* ... code making use of characterCode variable */
Möglicherweise möchten Sie die Vorwärtskompatibilität in Betracht ziehen, dh die Legacy-Eigenschaften verwenden, solange sie verfügbar sind, und nur dann, wenn sie gelöscht werden, zu den neuen wechseln:
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;
}
Siehe auch: die KeyboardEvent.codeEigenschaft docs und einige weitere Details in dieser Antwort .
.keywird in allen wichtigen Browser- Entwicklern unterstützt.mozilla.org