Hallo ThomasM,
ja, da stolperte ich in Jürgens Mouse&More Artikel auch gerade drüber. Ich finde das nicht unbedingt gut.
Das load-Event als Trigger für Scripte, die erst nach Fertigstellung des DOM laufen dürfen, ist anachronistisch. Statt dessen sollte man
- das Script als "defer" einbinden (oder als type="module", das impliziert defer)
- das Script am Ende des Body laden
- den Code in einen DOMContentLoaded Handler packen
In dieser Priorität.
Frickl generiert das script-Element hard-coded im <head> (wobei man heutzutage VERMUTLICH schadlos ein defer einbauen könnte), deswegen ist für Wiki-Beispiel die Variante 3 üblich.
Der andere Aspekt ist die Abhängigkeit bestimmter Codeteile davon, ob eine bestimmte Ressource geladen ist. Nur deswegen das komplette Script im load-Handler laufen zu lassen, finde ich falsch. Statt dessen gehört der Code dann in einen load-Handler zur Ressource. Und bevor man den registriert, würde ich prüfen, ob die Ressource vielleicht doch schon da ist. Bei einem object-Element dürfte das am contentDocument erkennbar sein, etwas anderes finde ich gerade nicht. Oder kann ich mich darauf verlassen, dass zum Zeitpunkt einer DOMContentLoaded- oder defer-Ausführung noch keine externe Ressource komplett geladen ist?
Rolf
sumpsi - posui - obstruxi