Ein Skript kann erst verwendet werden, wenn der HTML-Code vollständig geladen wurde. Ein Skript kann das DOM erst ändern, wenn der HTML-Code geladen wurde. document.ready
Wartet auf das Laden des DOM. Es macht also keinen Sinn, wichtige Dinge wie Stylesheets aufzubewahren.
Platzieren Sie die Skripte am Ende der Seite (vor dem </body>
Tag), um HTML und CSS so schnell wie möglich an den Benutzer weiterzuleiten. Der Browser kann die Seite viel schneller rendern und dann können Skripte geladen werden, anstatt dem Benutzer eine leere Seite zu hinterlassen, auf die er starren kann, während er auf das Herunterladen der Skripte wartet.
Während der Browser die Seite progressiv rendert, stoppt alles , wenn er auf ein Skript-Tag (dh eine externe Javascript-Datei) trifft . Skripte haben Vorfahrt - während ein Skript heruntergeladen wird, startet der Browser keinen weiteren Download. Das heißt, Bilder und Stylesheets sowie alle anderen parallelen Downloads werden auch auf anderen Hostnamen blockiert.
Der Nachteil des Platzierens von Skripten am Ende der Seite besteht darin, dass besonders schnelle Klicker in der Lage sind, mit Ihrer Site zu interagieren, bevor Javascript fertig ist, da die Seite gerendert wird, bevor Skripte initialisiert wurden.
Hinweis: Für Stylesheets gilt das Gegenteil : Stylesheets am unteren Rand der Seite blockieren das progressive Rendern, bis alle Stylesheets heruntergeladen wurden und in das Dokument HEAD
verschoben wurden, um das Problem zu beheben.
Es gibt einen tollen Trick, um Javascript zu laden, ohne dass der Benutzer warten muss. Sie können ein <script/>
Element mit der DOM- createElement()
Methode erstellen und es der Seite unmittelbar vor dem schließenden </body>
Tag hinzufügen :
var oScript = document.createElement("script");
oScript.src = "/path/to/my.js";
document.body.appendChild(oScript);
Der Browser lädt das js-Skript erst herunter, wenn das neue <script/>
Element tatsächlich zur Seite hinzugefügt wurde. Sobald der Download abgeschlossen ist, interpretiert der Browser den darin enthaltenen Javascript-Code.