Rolf B: Frage zum Wiki-Artikel „SVG_und_JavaScript“

Beitrag lesen

problematische Seite

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