Da eine einzelne Webseite viele externe Ressourcen enthalten kann: externe Javascript, externe CSS, Bilder, Applets, Flash, etc., sagt meine konventionelle Weisheit, dass das window.onload-Ereignis ausgelöst wird, wenn alle verknüpften Ressourcen beendet sind Herunterladen (obwohl die externen Ressourcen normalerweise in mehreren Threads oder Prozessen durch die Implementierung des Browsers heruntergeladen werden). Der übliche Fall funktioniert in den meisten Fällen. Aber ... was ist, wenn die Ladesequenz nicht das ist, was ich für selbstverständlich halte, könnte irgendwo und irgendwann ein Javascript-Bug einschleichen.Welche externen Ressourcen werden geladen, wenn das window.onload-Ereignis ausgelöst wird und wie lautet die Ladereihenfolge der Ressourcen?
Nach einigen Suchen fand ich, dass es nicht der Fall ist, was ich normalerweise denke. Von dieser Seite: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5214317.html scheint es, dass Bilder nicht geladen werden, wenn das Onload-Ereignis ausgelöst wird. Aber von hier window.onload vs <body onload=""/>, es scheint mir, die Bilder werden geladen, wenn onload ausgelöst wird. Es gibt mehr Verwirrung für mich von diesem Link http://forums.mozillazine.org/viewtopic.php?f=25&t=413504&start=0&st=0&sk=t&sd=a.
Also mein erster Teil der Frage ist: Sind alle Ressourcen wirklich geladen, wenn window.onload ausgelöst wird?
Ein weiterer naher verwandter Teil der Frage ist: Was ist die Reihenfolge, in der die Ressourcen geladen werden, bevor window.onload ausgelöst wird? Ich weiß für interne Ressourcen wie interne Javascript oder CSS, ist die Reihenfolge der Bestellung von der Spitze der Seite nach unten (es sei denn, in IE, verwenden Sie das verzögerte Skript wie hier sagt Getting notified when the page DOM has loaded (but before window.onload)). Aber was ist mit externen Javascript und CSS-Ressourcen? Zum Beispiel, wenn ich meine Seite wie folgt schreiben:
<external stylesheet...>
<external javascript #1...>
<external javascript #2...>
<script>
.....
window.onload=....
</script>
dann eine Funktion in „externen JavaScript-# 2“ ruft eine Funktion in „externen Javascript-# 1“ vorausgesetzt, kann ich sicher sein, es funktioniert immer? Auch wenn window.onload eine Funktion in "external javascript # 1" aufruft funktioniert auch wie erwartet?
Sie können sagen, die Ressourcen-Lade-Sequenz und wann fire.onload Ereignis ausgelöst wird abhängig von der Browser-Implementierung, wie hier What is the event precedence in JavaScript?. Aber ich frage mich immer noch, ob es eine Spezifikation oder eine Konvention in der Öffentlichkeit gibt. Würden Sie mich bitte auf eine Ressource verweisen oder mir die Fakten mitteilen, um meine Verwirrung zu klären?