Darüber hinaus , dass alle keyCode , die , charCode und keyIdentifier sind veraltet:
charCode
und keyIdentifier
sind Nicht-Standard - Funktionen.
keyIdentifier
wird ab Chrome 54 entfernt und Opera 41.0
keyCode
gibt 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 key
Eigenschaft 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 key
Wert von keyCode
oder den which
Eigenschaften 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.code
Eigenschaft docs und einige weitere Details in dieser Antwort .
.key
wird in allen wichtigen Browser- Entwicklern unterstützt.mozilla.org