JavaScript keyCode ist veraltet. Was bedeutet das in der Praxis?
Laut MDN, sollten wir definitiv nicht werden mit dem .keyCode-Eigenschaft. Es ist veraltet:
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
Auf w3 schools, wird dieser Umstand verharmlost und es ist nur eine Randnotiz, die sagen, dass .keyCode
wird für Kompatibilität und ausschließlich die neueste version des DOM-Events-Spezifikation empfehlen, die .key
- Eigenschaft statt.
Das problem ist, dass .key
ist nicht unterstützt von den Browsern, also was sollten wir verwenden? Gibt es etwas, was ich bin fehlt?
InformationsquelleAutor der Frage Jason210 | 2016-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
MDN hat schon eine Lösung:
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
InformationsquelleAutor der Antwort Vicky Gonsalves
Darüber, dass alle keyCodediecharCode und keyIdentifier sind veraltet :
charCode
undkeyIdentifier
sind nicht-standard-Funktionen.keyIdentifier
entfernt von Chrom-54-und Opern-41.0keyCode
gibt 0 zurück, auf keypress-Ereignis mit normalen Zeichen auf FF.Die key-Eigenschaft :
Als der Zeitpunkt des Schreibens dieses Artikels, die
key
- Eigenschaft wird unterstützt von allen großen Browsern aus : Firefox 52, Chrom, 55, Safari 10.1, Opera 46. Außer Internet Explorer 11, die hat :nicht-standard-Schlüssel-IDS und falsche Verhalten mit AltGraph. Mehr info
Wenn das wichtig ist und/oder die rückwärts-Kompatibilität ist, dann können Sie feature-Erkennung wie im folgenden code :
Beachten Sie, dass die
key
Wert unterscheidet sich vonkeyCode
oderwhich
Eigenschaften : es enthält den Namen des Schlüssels nicht seinen code. Wenn Ihr Programm benötigt Zeichen' - codes, dann können Sie Gebrauch machen voncharCodeAt()
.Für die einzelnen druckbaren Zeichen, die Sie verwenden können
charCodeAt()
, wenn Sie den Umgang mit Schlüsseln, deren Werte enthält mehrere Zeichen wie ArrowUpdie Chancen sind : prüfen Sie, Sondertasten und handeln entsprechend. So versuchen Sie, die Umsetzung einer Tabelle von Schlüssel-Werte und die entsprechenden
codes
charCodeArr["ArrowUp"]=38
,charCodeArr["Enter"]=13
,charCodeArr[Escape]=27
... und so weiter, werfen Sie bitte einen Blick auf Schlüsselwerte und Ihre entsprechende codesWerden können, die Sie möchten zu prüfen die Aufwärtskompatibilität ich.e der ältere, Eigenschaften, während Sie verfügbar sind, und nur bei gefallen wechseln Sie zu der neuen :
Siehe auch : die
KeyboardEvent.code
Eigenschaft docs und einige weitere details in diesem Antwort.InformationsquelleAutor der Antwort user10089632
TLDR: ich würde vorschlagen, dass Sie sollte verwenden Sie die neue
event.key
undevent.code
Eigenschaften anstelle der legacy lieben. IE und Edge-Unterstützung für diese Eigenschaften, aber unterstützen nicht die neuen Namen noch nicht. Für Sie gibt es eine kleine polyfill das macht diese Ausgabe der standard-Schlüssel/code-name:https://github.com/shvaikalesh/shim-keyboard-event-key
Kam ich zu dieser Frage auf der Suche nach dem Grund der gleichen MDN Warnung OP. Nach der Suche einige mehr, das Problem mit
keyCode
wird klar:Das problem bei der Verwendung
keyCode
ist, dass nicht-englischen Tastaturen produzieren können verschiedene Ausgänge und sogar Tastaturen mit verschiedenen layouts kann inkonsistente Ergebnisse. Plus, es war der Fall vonWenn Sie Lesen Sie in der W3C-spec:
https://www.w3.org/TR/uievents/#interface-keyboardevent
Es geht in eine Tiefe, die beschreiben, was falsch war mit
keyCode
:https://www.w3.org/TR/uievents/#legacy-key-attributes
So, nach dem Aufbau der Grund, warum die legacy-keyCode ersetzt wurde, laßt uns anschauen, was Sie heute tun:
key
undcode
).InformationsquelleAutor der Antwort kumar_harsh
Tun, was ich Tue. Ich einfach nicht darauf. MDN kann sagen, dass es veraltet ist, aber wenn Sie nicht bieten eine alternative (außer für keyIdentifier), dann müssen Sie die Verwendung der veralteten version.
InformationsquelleAutor der Antwort Bálint