2012-04-01 5 views
1

Ich habe gelesen, über die technischen Unterschiede wie welche Option wartet auf die entsprechenden Elemente zu laden, aber in den meisten Fällen verstehe ich, dass sie beide einen ähnlichen Zweck dienen.Warum verwendet <body onload = "fn();"> einen Funktionsaufruf, sondern window.onload = fn; Verwenden Sie eine Handler-Funktion?

Ich würde gerne über die Gründe dafür wissen, hinter dem Aufruf der Funktion (sagen wir, initialize();) bei der Verwendung, sondern nur mit dem Funktionsnamen beim Schreiben window.onload = myFunction. (MDN nennt es eine Handler-Funktion). Hier beziehe ich mich auf den Unterschied, die fehlenden Klammern.

Gibt es einen Vorteil, entweder zu nähern? Ein technischer Grund?

Antwort

2

Dies ist der Unterschied zwischen HTML-Markup und dem von JavaScript verwendeten Document Object Model. Wenn Sie laufen:

window.onload = fn; 

, dass die Eigenschaft „onload“ zu dieser Funktion Objekt setzt, die das Ereignis zu behandeln ist. Wenn auf der anderen Seite, Sie schrieb:

window.onload = fn(); 

die fn sofort ausführen würde, und stellen Sie die onload-Eigenschaft auf welchem ​​Wert die Funktion zurück (die auch funktionieren könnte, wenn die Funktion fn eine andere Funktion zurückgegeben).

2

Das onload Attribut enthält eine Zeichenfolge von Javascript-Code zum Ausführen.
Es muss kein Funktionsaufruf sein; es können beliebige Aussagen sein.

Die onload Eigenschaft hält nur eine Funktion.

+0

Um klar zu sein, meinen Sie die Onload mit ? –

+0

Ja; Das ist ein HTML-Attribut. – SLaks

+0

OK, danke für die sehr schnelle Erklärung! –

Verwandte Themen