Ponieważ pojedyncza strona internetowa może zawierać wiele zewnętrznych zasobów: zewnętrzny javascript, zewnętrzny css, obrazy, aplety, flash itd., Zazwyczaj moja konwencjonalna mądrość mówi mi, że zdarzenie window.onload jest uruchamiane, gdy wszystkie połączone zasoby są zakończone pobieranie (chociaż zasoby zewnętrzne są zwykle pobierane w wielu wątkach lub procesach przez implementację przeglądarki). Zwykły przypadek może działać przez większość czasu. Ale ... co jeśli kolejność ładowania nie jest tym, co uważam za pewnik, jakiś błąd javascript może gdzieś i gdzieś się wkradnąć.Jakie zasoby zewnętrzne są ładowane po wywołaniu zdarzenia window.onload i jaka jest kolejność ładowania zasobów?
Po przeprowadzeniu wyszukiwania okazało się, że nie jest tak, jak zwykle myślę. Z tej strony: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5214317.html, wygląda na to, że obrazy nie są ładowane po uruchomieniu zdarzenia onload. Ale stąd window.onload vs <body onload=""/>, wydaje mi się, że obrazy są ładowane po uruchomieniu ładowania. Jest więcej nieporozumień dla mnie z tego linku http://forums.mozillazine.org/viewtopic.php?f=25&t=413504&start=0&st=0&sk=t&sd=a.
Moja pierwsza część pytania brzmi: Czy wszystkie zasoby NAPRAWDĘ są ładowane po uruchomieniu window.onload?
Kolejna ściśle związana część pytania: Co to jest ładowanie zasobów przed uruchomieniem window.onload? Wiem, że dla zasobów wewnętrznych, takich jak wewnętrzny javascript lub css, kolejność ładowania jest od początku strony do dołu (chyba że w IE, użyj odroczonego skryptu, jak tutaj mówi Getting notified when the page DOM has loaded (but before window.onload)). Ale co z zewnętrznymi javascript i zasobami css? Na przykład, jeśli piszę moją stronę tak:
<external stylesheet...>
<external javascript #1...>
<external javascript #2...>
<script>
.....
window.onload=....
</script>
Następnie zakładając funkcję w „zewnętrzne javascript # 2” wywołuje funkcję w „zewnętrzne javascript # 1”, mogę być pewien, że zawsze działa? Również jeśli window.onload wywołuje funkcję w "zewnętrznym javascript # 1" działa również zgodnie z oczekiwaniami?
Można powiedzieć, że sekwencja ładowania zasobów i kiedy należy uruchomić zdarzenie window.onload jest zależne od implementacji przeglądarki, jak podano tutaj What is the event precedence in JavaScript?. Ale nadal zastanawiam się, czy istnieje publiczna specyfikacja lub konwencja. Czy mógłbyś skierować mnie do zasobu lub powiedzieć mi fakty, by oczyścić moje zamieszanie?