Ich habe eine Seite mit einem script
Tag im Abschnitt HEAD:Wird das Skript, das mit einem Async-Attribut geladen wurde, ein Onload-Ereignis verzögern?
<script src="somescript.js" type="text/javascript" async></script>
Wie es enthält async
Attribut es lädt asynchron und Browser analysiert die Seite ohne für dieses Skript wartet heruntergeladen werden. Nach dem Herunterladen wird dieses Skript ebenfalls asynchron ausgeführt, so dass der Browser die Seite weiter analysieren kann.
Dieses Skript wird ausführen, nachdem einige Aktionen heruntergeladen und fügt noch ein weiteres Skript dynamisch über etwas ähnliches, dies zu:
var a = document.createElement('script');
a.type = 'text/javascript';
a.src = 'http://domain/otherscript.js';
var elem_body = document.getElementsByTagName('body')[0];
elem_body.appendChild(a);
Dieses neue dynamisch eingefügt Skript wird auch asynchron und wieder Browser zu anderen weiter ausgeführt werden Dinge, so analysieren Sie die Seite oder andere Skripte wie benötigt.
Nun ist mein Verständnis, dass dieses Skript vom Anfang bis zum Ende seiner Ausführung den Browser in keiner Weise blockieren wird. Es wird geladen, ein anderes Skript eingefügt und vollständig asynchron ausgeführt. DOMContentLoaded
Ereignis wird überhaupt nicht verlangsamt werden.
Könnte das möglicherweise das Auslösen von onload
Event verzögern? Es scheint mir, dass dieses Skript starten würde, wenn die Seite fast geparst ist. Dann würde es andere Skripte anfordern und onload
Event wäre möglicherweise verzögert weiter warten auf dieses letzte Skript, um seine Sache zu tun.
Ist mein Verständnis korrekt?
EDIT
Added-Test bei http://plnkr.co/edit/BCDPdgCjPeNUmLbf7wNR?p=preview und in Chrome scheint es, dass es Verzögerung onload Ereignis
wie beschrieben, würde onload() höchstwahrscheinlich vor der Ausführung von otherscript.js ausgelöst werden, aber ein einfacher Test würde ausreichen. – dandavis