Hallo
Man muss bei der Notation im
head
halt darauf achten, dass man die Ausführung erst beginnen lässt, wenn das Dokument im Browser angekommen ist,Also auf das
DOMContentLoaded
-Event lauschen.was sich wiederum grundsätzlich verzögert, weil erst der javaScript-Code geladen und analysiert werden muss.
In HTML5 gibt es die Attribute
async
unddefer
fürsscript
-Element, die das Blockieren des Renderns verhindern.
Wenn ich die Beschreibung der genannten Attribute in der Doku betrachte, überschneiden und widersprechen sich deren Anwendungsgebiete teilweise miteinander und mit DOMContentLoaded
.
- async: Das Script wird ausgeführt, sobald es geladen ist.
- defer: Das (externe) Script wird erst ausgeführt, wenn die Seite geladen ist.
Das Attribut async
sorgt dafür, dass die Ausführung des Skripts erst dann beginnt, wenn es selbst vollständig geladen ist. Das Attribut defer
hingegen startet die Ausführung, wenn das Dokument vollständig geladen ist. Die beiden Attribute sollten, wenn ich das richtig deute, nicht zusammen notiert werden, weil sich ihre Aussagen widersprechen. Andererseits scheint mit defer
zum selben Zeitpunkt zuzuschlagen, wenn DOMContentLoaded
auslösen würde, falls script
ohne das Attribut defer
notiert ist. Oder liege ich damit falsch?
Tschö, Auge
Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
Terry Pratchett, „Gevatter Tod“