2013-03-20 9 views
6

Kann mir jemand erklären, was bedeutet diese Zeile Code bedeutet:Warum verwendet dieser Ereignishandler "e = e || event"?

function(e) { e = e || event; e.returnValue = false; return false; } 

Warum wird der Parameter e benannt?
Wenn ich es zu "Myparam" ändere, wird es funktionieren?
Was bedeutet e = e?

Wo wird die Variable event (nach ||) deklariert? Was e.returnValue? ist

+1

Denken Sie daran, eine Frage nach der anderen zu stellen. Und suche zuerst. –

+0

Es ist eine Frage. Die anderen sind nur um die Bedeutung der Frage zu klären! –

Antwort

11

Das ist alles grundlegende Event-Management, obwohl es e.preventDefault() ...

fehlt

es zu brechen, wenn ein Event-Handler ausgelöst wird:

  • Einige Browser einen Parameter an den Rückruf übergeben Ereignisdaten halten (dies ist die standardkonforme Art, dies zu tun)
  • Andere Browser (meistens alte IE) setzen stattdessen die Ereignisdaten in window.event (auf die hier mit nur event zugegriffen wird, was riskant ist, da es darauf ankommt nein, lo cal Variable mit diesem Namen)

Als nächstes ist e = e || event; eine standardisierte Möglichkeit zu sagen „wenn der Parameter nicht übergeben wurde, den Standard es unabhängig von den nach den ||“. Wenn in diesem Fall der Ereignisparameter nicht übergeben wird, sucht er nach der globalen Variablen.

e.returnValue ist eine von drei Möglichkeiten, ein Ereignis daran zu hindern, seine Standardaktion auszulösen. Die anderen beiden sind e.preventDefault && e.preventDefault() (die auffällig in dem Code fehlt, den Sie gepostet haben) und return false;

1

Dieses Stück Code testen, ob ein e Objekt vorhanden ist, sonst verwenden Sie das Objekt event und es e zuweisen. Danach setzt er das Attribut returnValue auf false und gibt false zurück.

Dies ist Code, der auf IE und anderen Browsern auf die gleiche Weise ausgeführt wird, unabhängig davon, ob das Ereignisobjekt e oder event aufgerufen wird.

+2

Ich finde "setze es auf e" mehrdeutig - welchen Weg geht die Aufgabe? Vielleicht wäre es "klarer zu e". –

1

Diese Zeile dient nur dazu, IE8 und darunter die gleiche Funktion wie alle anderen Browser zu machen. Alle anderen Browser übergeben das Zielelement (e) an die Ereignisfunktion.

Also, was dieses Stück Code tut, ist:

Wenn e vorhanden ist, e zu halten. Wenn es nicht existiert, verwenden Sie eine ältere Version von IE und wir weisen das Objekt windows.evente zu. Jetzt verhalten sich alle Browser gleich.

Verwandte Themen