Benutzer:Melancholie/onloadEvents
Us der alemannische Wikipedia, der freie Dialäkt-Enzyklopedy
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 - 11 - 2- 1 - 3
- 2 - 1
2 - 2- 2 - 3
- 3 - 1
- 3 - 2
- 3 - 3
- Ebenfalls möglicher Syntax:
addOnloadHook(function () {});