2010-12-01 2 views
5

Wenn Ihre Seite geparst wird und auf eine <script src='someExternalSite/jquery.js'></script> oder was auch immer stößt, wartet die Seite, bis diese Datei heruntergeladen und verfügbar ist, bevor die Analyse fortgesetzt wird?Führen externe Javascript-Verweise dazu, dass der Browser wartet, bis sie heruntergeladen werden?

Hinzugefügt:

den meisten Browsern alle gleichzeitig Sie die Skripte herunterladen Zeit sparen (auch wenn sie sie in der Reihenfolge ausführen)?

Antwort

2

Jedes Tag blockiert die Seite vom weiteren Rendern, bis die js-Datei vollständig heruntergeladen wurde. Es ist eine gute Idee, js-Datei am Ende des Body-Tags zu platzieren

0

Alle Hauptbrowser sollten versuchen, diese Dateien synchron zu bekommen, weil das nächste Skript in der Liste sich auf das eine rechts davor verlassen konnte.

0

Ja, deshalb empfehlen die Leute das Hinzufügen von Skripts kurz vor dem Tag oder mit dem Attribut defer.

2

funktioniert die Seite warten, bis die Datei vor heruntergeladen und verfügbar ist weiterhin zu analysieren?

Es wartet nicht nur, bis der JS heruntergeladen wurde, es wartet, bis es geparst und ausgeführt wurde. Die anderen Ratschläge, es am Ende der Seite zu platzieren, sind genau richtig.

Haben die meisten Browser gleichzeitig alle Skripte herunterladen Zeit speichern (auch wenn sie sie in der Reihenfolge ausführen)?

Eigentlich denke ich, nur die neueren tun. Ich stieß auf eine Webseite über dieses Alter, dass ich nicht Lesezeichen, sorry.

2

Ja, es wird blockiert und das Skript wird nur ausgeführt, wenn vorher andere Skripte geladen wurden.

z.

Die meisten Browser versuchen, die Dinge zu beschleunigen, indem sie diese beiden Skripte parallel laden. Auch wenn script2.js vor script1.js geladen wird, werden sie erst ausgeführt, wenn beide geladen sind.

Ich habe vor kurzem in Schwierigkeiten damit geraten. Also erarbeite ich ein paar verwandte Punkte.

document.write() zwingt den Parser zu stoppen, und auf diese Weise die Skript Einfügen sequentiell noch ausgeführt wird (script1.js vor script2.js):

document.write('<script src=\'someExternalSite/script1.js\'></script>'); 
    document.write('<script src=\'someExternalSite/script2.js\'></script>'); 

Schließlich können Sie vollständig asynchronen Laden erhalten, indem Sie:

var script1 = document.createElement('script'); 
script1.src = 'script1.js'; 
document.getElementByTagName('body')[0].appendChild(script1);  

var script2 = document.createElement('script'); 
script2.src = 'script2.js'; 
document.getElementByTagName('body')[0].appendChild(script2);  

Der letzte ist sehr schnell, da die Skripte vollständig parallel geladen werden, aber es gibt einen großen gotcha. Für Webkit-basierte Browser ist die Reihenfolge nicht garantiert, script2.js wird vor script1.js ausgeführt, wenn es zuerst geladen wird. Wenn Sie das umgehen können, sagen Sie alle Skripte in einer Javascript-Datei, dann ist diese Methode großartig.

Dynamic script addition should be ordered?

Verwandte Themen