Was ist die Funktionalität des Javascript-Ereignisses e.which
? Bitte kurz mit Beispiel.
javascript
dom-events
minil
quelle
quelle
Antworten:
e.which
ist kein Ereignis,which
ist eine Eigenschaft desevent
Objekts, die die meisten Leute alse
in ihren Ereignishandlern bezeichnen. Es enthält den Tastencode der Taste, die zum Auslösen des Ereignisses gedrückt wurde (z. B. Tastendruck, Tastendruck).document.onkeypress = function(myEvent) { // doesn't have to be "e" console.log(myEvent.which); };
Mit diesem Code druckt die Konsole den Code jeder Taste aus, die Sie auf der Tastatur drücken.
Verfallserklärung
KeyboardEvent.was veraltet ist. Bitte suchen Sie nach Alternativen wie KeyboardEvent.key . Lesen Sie den vollständigen API hier .
quelle
which
ist auch für Mausereignisse vorhanden, und Ihr Beispiel funktioniert nicht für den IE, in dem ein Ereignishandler keinen Ereignisparameter empfängt.which
ist eine Eigenschaft vonEvent
Objekten. Es ist in den meisten Browsern für schlüssel- und mausbezogene Ereignisse definiert, in beiden Fällen jedoch nicht im IE (vor Version 9).Gibt bei mausbezogenen Ereignissen
which
die betroffene Maustaste an. Für IE <9 wird der äquivalente Wert in gefundenwindow.event.button
. Um diebutton
Sache zu verkomplizieren, unterstützen Nicht-IE-Browser auch eine Eigenschaft von Mausereignissen, die manchmal einen anderen Wert als meldenwhich
. Außerdem haben Browser manchmal unterschiedliche Werte für dieselbe Schaltfläche oder Kombination von Schaltflächen. Wenn Sie sich an die Verwendungwhich
in allen Browsern halten, die dies unterstützen, undbutton
in IE <9, besteht die einzige Konstante darin, dass ein Wert von 1 immer bedeutet, dass die linke Maustaste beteiligt war (wenn auch nicht unbedingt allein).document.onmousedown = function(e) { e = e || window.event; var button = (typeof e.which != "undefined") ? e.which : e.button; if (button == 1) { alert("Left mouse button down"); } };
Für eine vollständige Analyse empfehle ich Jan Wolters Artikel über JavaScript-Mausereignisse .
Für die Schlüsselbezogene Ereignisse,
which
bezieht sich auf die Taste , die gedrückt wurde. Fürkeydown
undkeyup
Ereignisse ist dies relativ einfach: Es ist der Schlüsselcode für die gedrückte Taste und gibt denselben Wert wie diekeyCode
Eigenschaft des Ereignisses zurück . Da alle Browser diekeyCode
Eigenschaft unterstützen und IE <9 nicht unterstütztwhich
, sollten Sie im AllgemeinenkeyCode
fürkeydown
undkeyup
Ereignisse verwenden.Bei
keypress
Veranstaltungen ist die Situation komplizierter. Bei druckbaren Zeichentastenwhich
ist der Zeichencode für die gedrückte Taste und wird in mehr Browsern als dercharCode
Eigenschaft unterstützt. In IE <9 ist das Äquivalent wieder diekeyCode
Eigenschaft. Um das eingegebene Zeichen zu erkennen, ist das Folgende ein browserübergreifender Ansatz. Beachten Sie, dass der folgende Code nicht für nicht druckbare Tasten wie Pfeiltasten verwendet werden sollte, die Sie stattdessen im folgendenkeydown
Fall erkennen sollten :document.onkeypress = function(e) { e = e || window.event; var charCode = (typeof e.which == "number") ? e.which : e.keyCode; if (charCode) { alert("Character typed: " + String.fromCharCode(charCode)); } };
Für weitere Details empfehle ich den Artikel von Jan Wolter über JavaScript-Schlüsselereignisse
quelle
Diese Funktion wurde aus den Webstandards entfernt. Obwohl einige Browser dies möglicherweise noch unterstützen, wird es gerade gelöscht. Verwenden Sie es nicht in alten oder neuen Projekten. Seiten oder Web-Apps, die es verwenden, können jederzeit beschädigt werden.
Sie sollten
KeyboardEvent.key
stattdessen verwenden, wenn es verfügbar ist.http://codepen.io/KevinOrfas/pen/QKbKAd
quelle
KeyboardEvent.key
zurückkehren wird „die Kennung des Schlüssels (Zeichen)“ , währendKeyboardEvent.which
zurückkehren wird „um die numerische keyCode“ .Während einer Veranstaltung
e
:ist dasselbe wie:
Mit beiden Funktionen können Sie den Schlüsselcode der Taste abrufen, die während eines Tastendruck-, Tastendruck- oder Tastendruckereignisses gedrückt wurde
Viele Leute verwenden
||
(ODER), um sicherzustellen, dass ihr Code in Browsern funktioniert, die welche Eigenschaft nicht unterstützen. Schauen Sie sich den folgenden Code an:document.onkeypress = function(e) { var key = e.which || e.keyCode; alert(key); }
quelle