Skip to content

.keyCode vs. .which

Lösung:

Notiz: Die Antwort unten wurde 2010 geschrieben. Hier viele Jahre später beide keyCode und which werden zu Gunsten von key (für den logischen Schlüssel) und code (für die physische Platzierung des Schlüssels). Beachten Sie jedoch, dass der IE nicht unterstützt code, und seine Unterstützung für key basiert auf einer älteren Version der Spezifikation und ist daher nicht ganz korrekt. Während ich dies schreibe, unterstützt das aktuelle Edge, das auf EdgeHTML und Chakra basiert, nicht code entweder, aber Microsoft führt seinen Blink- und V8-basierten Ersatz für Edge ein, was vermutlich der Fall ist / wird.


Einige Browser verwenden keyCode, andere benutzen which.

Wenn Sie jQuery verwenden, können Sie zuverlässig verwenden which wie jQuery Dinge standardisiert; Mehr hier.

Wenn Sie jQuery nicht verwenden, können Sie Folgendes tun:

var key = 'which' in e ? e.which : e.keyCode;

Oder alternativ:

var key = e.which || e.keyCode || 0;

...die die Möglichkeit handhabt, dass e.which mag sein 0 (indem du das wiederherstellst 0 am Ende mit JavaScripts merkwürdig-mächtigem || Operator).

jQuery normalisiert event.which je nachdem ob event.which, event.keyCode oder event.charCode wird vom Browser unterstützt:

// Add which for key events
if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
   event.which = event.charCode != null ? event.charCode : event.keyCode;
}

Ein zusätzlicher Vorteil von .which ist, dass jQuery es auch für Mausklicks macht:

// Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && event.button !== undefined ) {
    event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
}

Wenn Sie in Vanilla Javascript bleiben, beachten Sie bitte, dass keyCode jetzt veraltet ist und gelöscht wird:

Diese Funktion wurde aus den Webstandards entfernt. Obwohl einige Browser es möglicherweise noch unterstützen, wird es gerade gelöscht. Vermeiden Sie die Verwendung und aktualisieren Sie nach Möglichkeit vorhandenen Code. Sehen Sie sich die Kompatibilitätstabelle am Ende dieser Seite an, um Ihre Entscheidung zu treffen. Beachten Sie, dass diese Funktion jederzeit nicht mehr funktionieren kann

https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode

Verwenden Sie stattdessen entweder: .Schlüssel oder .Code je nach gewünschtem Verhalten: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code https://developer.mozilla.org/en-US/docs/Web/API/ TastaturEreignis/Taste

Beide sind in modernen Browsern implementiert.

Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.