Was ist die Funktionalität des Javascript-Ereignisses e.which
? Bitte kurz mit Beispiel.
Was ist die Funktionalität des Javascript-Ereignisses e.which
? Bitte kurz mit Beispiel.
Antworten:
e.which
ist kein Ereignis, which
ist eine Eigenschaft des event
Objekts, die die meisten Leute als e
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.
KeyboardEvent.was veraltet ist. Bitte suchen Sie nach Alternativen wie KeyboardEvent.key . Lesen Sie den vollständigen API hier .
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 von Event
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 gefunden window.event.button
. Um die button
Sache zu verkomplizieren, unterstützen Nicht-IE-Browser auch eine Eigenschaft von Mausereignissen, die manchmal einen anderen Wert als melden which
. Außerdem haben Browser manchmal unterschiedliche Werte für dieselbe Schaltfläche oder Kombination von Schaltflächen. Wenn Sie sich an die Verwendung which
in allen Browsern halten, die dies unterstützen, und button
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ür keydown
und keyup
Ereignisse ist dies relativ einfach: Es ist der Schlüsselcode für die gedrückte Taste und gibt denselben Wert wie die keyCode
Eigenschaft des Ereignisses zurück . Da alle Browser die keyCode
Eigenschaft unterstützen und IE <9 nicht unterstützt which
, sollten Sie im Allgemeinen keyCode
für keydown
und keyup
Ereignisse verwenden.
Bei keypress
Veranstaltungen ist die Situation komplizierter. Bei druckbaren Zeichentasten which
ist der Zeichencode für die gedrückte Taste und wird in mehr Browsern als der charCode
Eigenschaft unterstützt. In IE <9 ist das Äquivalent wieder die keyCode
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 folgenden keydown
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
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.
KeyboardEvent.key
zurückkehren wird „die Kennung des Schlüssels (Zeichen)“ , während KeyboardEvent.which
zurückkehren wird „um die numerische keyCode“ .
Während einer Veranstaltung e
:
e.which
ist dasselbe wie:
e.keyCode
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);
}