Der Martin: window.onload function()

Beitrag lesen

Hallöchen,

"body onload" ist mir eigentlich klar. Hier wird beim Laden der Seite eine Funktion ausgeführt. Im Beispiel unten "Ausgabe()"
<body onload="Ausgabe();">

richtig.

Ich habe heute einen alten Self Thread entdeckt wo window.onload verwendet wird.
http://forum.de.selfhtml.org/archiv/2009/1/t181724/#m1201995

Ja, das ist die elegantere Methode.

Was ist denn eigentlich der genaue Unterschied zwischen "window.onload=" und "body onload="?

Im einen Fall hast du Javascript-Code im HTML, im anderen Fall sind HTML und Javascript sauber getrennt. Diese Trennung strebt man normalerweise an, weil der Code dann meist übersichtlicher und leichter zu warten ist.

Beides wird doch ausgeführt wenn die Seite geladen ist oder?

Ja, von der Wirkung her gibt es keinen Unterschied.

Und, was bewirkt "window.onload = function()" ?
Wird hier explizit gesagt das nach dem Laden der Seite eine Funktion ausgeführt wird?

Ja. Damit wird die Funktion, die nach dem Fertigladen ausgeführt werden soll, direkt an das window-Objekt gebunden.

window.onload = function() {

MeineFunction();
}

  

> Könnte man nicht auch einfach  
> window.onload = MeineFunction();  
> sagen?  
  
Ja, das ist aber nicht dasselbe.  
  

> Bzw. in einem weiteren Self Artikel sieht man hinter window.onload die Funktion ohne Klammer  
  
Genau das ist der springende Punkt. Man möchte die Funktion ja nicht \*sofort\* aufrufen und dem Eventhandler ihr Ergebnis zuweisen, sondern man möchte dem Eventhandler das Funktionsobjekt selbst zuweisen. Klammern hinter einem Funktionsnamen bedeuten aber immer den Aufruf der Funktion.  
  

> window.onload = opera\_befreien;  
  

> warum müssen / können hier die Klammern weggelassen werden, bzw. was macht man wenn eine Funktion zwingend Parameter braucht?  
  
Was es mit den Klammern auf sich hat, hast du jetzt vermutlich verstanden. Wenn deine Funktion tatsächlich Argumente braucht, musst du eine anonyme Funktion "drumherum" bauen:  
  

> window.onload = function() { opera\_befreien(arg1, arg2); };  
  
So long,  
 Martin  

-- 
Die neue E-Mailadresse des Papstes: <mailto:urbi@orbi>