Nach Zurückstellungs attirbute MDN says:Werden verzögerte Skripts vor dem DOMContentLoaded-Ereignis ausgeführt?
Dieses Boolean Attribute an einen Browser, um anzuzeigen, gesetzt, dass das Skript ausgeführt werden soll, nachdem das Dokument analysiert wurde, aber vor DOMContentLoaded Brennen. Das Defer-Attribut sollte nur für externe Skripts verwendet werden.
Auf DOMContentLoaded
MDN also says:
Das DOMContentLoaded Ereignis ausgelöst wird, wenn die anfängliche HTML-Dokument vollständig geladen und analysiert wurde, ohne für Stylesheets warten ...
So DOMContentLoaded
wird gefeuert, bevor CSSOM
bereit ist. Dies bedeutet, dass zurückgestellte Skripte ausgeführt werden, bevor CSSOM
bereit ist. Aber wenn das der Fall ist, dürfen die Scripts nicht in der Lage sein, korrekte css-Eigenschaftswerte zu erhalten und css nicht korrekt anzuwenden. Aber es ist nicht wahr, wir wissen, dass alle zurückgestellten Skripte gut funktionieren.
- Ist MDN Dokumentation technisch falsch?
- Wo finde ich die offizielle Dokumentation von DOMContentLoaded`? Ich suchte in https://dom.spec.whatwg.org/, konnte es aber nicht finden.
P. S: Bitte nicht, dass google says die CSSOM ist aufbauen, bevor sie eine Inline-javscript
Aber Google ist technisch nicht korrekt ausgeführt wird. Inline-JavaScript wird ausgeführt, bevor CSSOM bereit ist. Und aus meinen Tests habe ich festgestellt, dass MDN korrekt ist und wenn js-Dateien (sowohl verzögert als auch nicht zurückgestellt) vor CSS-Dateien heruntergeladen werden (oder js inline ist), dann wird js ausgeführt, bevor CSSOM bereit ist. Js könnte also Stile falsch behandeln. Um dies zu vermeiden, benötigen wir einen Force-Reflow vor allen js-Logiken.
Also, wenn ein Benutzer unsere Website mit allen js besucht bereits zwischengespeichert und CSS nicht zwischengespeichert ODER js wird heruntergeladen vor css dann (s) er möglicherweise falsch gerenderten Seite sehen. Um dies zu vermeiden, sollten wir in allen js-Dateien unserer Websites Force Reflow hinzufügen.
Auch eine ähnliche Diskussion auf http://stackoverflow.com/q los ist/42891628/3429430 – user31782