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.