Benutzer:Melancholie/onloadEvents

Us der alemannische Wikipedia, der freie Dialäkt-Enzyklopedy

In Sachen Event-Handler:

Nach ausgiebigem Testen konnte ich folgende Einteilung vornehmen:

[ändere] Nr. 1

Der wohl beste Onload-Event-Handler ist addOnloadHook(func); (= var onloadFuncts = [func]; bzw. onloadFuncts[onloadFuncts.length] = func;)

  • Vorteil: Setzt ein wenn Quelltext geladen, wartet nicht bis Bilder geladen, also der schnellste Event-Handler; wenn einmal im Zw.speicher dann sogar noch schneller.
  • Grund: Wird im HTML durch runOnloadHook(); aufgerufen.
  • Nachteil: So schnell, dass vorheriges getElementById, etc. noch nicht ausgeführt, falls davon abhängig also nicht gut; durch die außerordentliche Schnelligkeit könnte beim IE4.0 trotzdem ein innerHTML-Laufzeitfehler auftreten (bei 1 bis 3 ‰ der Besucher würde also ein gelbes Warnsymbölchen in der Statusleiste aufleuchten ;-).

[ändere] Nr. 2

Der zweitbeste Onload-Event-Handler ist hookEvent("load", func); (= addLoadEvent(func); bzw. aOnloadFunctions[aOnloadFunctions.length] = func;) oder einmalig window.onload = function xy() {}.

  • Vorteil: Zuverlässiger als Nr. 3 (eben ein Event-Handler); DOM-Syntax?
  • Nachteil: Setzt erst ein wenn Bilder geladen.

[ändere] Nr. 3

Das drittbeste Onload-Event-Handling (ist eigentlich keines, da nicht geregelt ablaufend) ist func(); bzw. der völlige Verzicht auf function xy() {}.

  • Vorteil: Skriptinhalt wird sofort ausgeführt, Text sofort eingebaut sobald entsprechende Stelle geladen.
  • Nachteil: Vor allem bei größeren Seiten eher unzuverlässig, bei sehr großen Seiten tut sich also nichts (z.B. im Firefox); setAttribute macht damit z.B. Probleme.


Rangordnung (später ist stärker):

  • 1.1.: aOnloadFunctions[aOnloadFunctions.length] = func;
  • 1.2a.: window.onload = function xy() {}
  • 1.2b.: hookEvent("load", func);
  • 2a.: addOnloadHook(func);
  • 2b.: var onloadFuncts = [func]; bzw. onloadFuncts[onloadFuncts.length] = func;
  • 3a.: func();
  • 3b.: function xy() {}


Kombinationen (Mutter - Kind):

  • 1 - 1
  • 1 - 2
  • 1 - 3
  • 2 - 1
  • 2 - 2
  • 2 - 3
  • 3 - 1
  • 3 - 2
  • 3 - 3


  • Ebenfalls möglicher Syntax: addOnloadHook(function () {});