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.whichist kein Ereignis, whichist eine Eigenschaft des eventObjekts, die die meisten Leute als ein 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 .
whichist auch für Mausereignisse vorhanden, und Ihr Beispiel funktioniert nicht für den IE, in dem ein Ereignishandler keinen Ereignisparameter empfängt.
whichist eine Eigenschaft von EventObjekten. 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 whichdie betroffene Maustaste an. Für IE <9 wird der äquivalente Wert in gefunden window.event.button. Um die buttonSache 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 whichin allen Browsern halten, die dies unterstützen, und buttonin 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, whichbezieht sich auf die Taste , die gedrückt wurde. Für keydownund keyupEreignisse ist dies relativ einfach: Es ist der Schlüsselcode für die gedrückte Taste und gibt denselben Wert wie die keyCodeEigenschaft des Ereignisses zurück . Da alle Browser die keyCodeEigenschaft unterstützen und IE <9 nicht unterstützt which, sollten Sie im Allgemeinen keyCodefür keydownund keyupEreignisse verwenden.
Bei keypressVeranstaltungen ist die Situation komplizierter. Bei druckbaren Zeichentasten whichist der Zeichencode für die gedrückte Taste und wird in mehr Browsern als der charCodeEigenschaft unterstützt. In IE <9 ist das Äquivalent wieder die keyCodeEigenschaft. 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 keydownFall 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.keystattdessen verwenden, wenn es verfügbar ist.
KeyboardEvent.keyzurückkehren wird „die Kennung des Schlüssels (Zeichen)“ , während KeyboardEvent.whichzurü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);
}