Saya telah melakukan beberapa proyek berbasis web, tetapi saya tidak terlalu memikirkan beban dan urutan eksekusi dari halaman web biasa. Tapi sekarang saya perlu tahu detailnya. Sulit untuk menemukan jawaban dari Google atau SO, jadi saya membuat pertanyaan ini.
Halaman contohnya seperti ini:
<html>
<head>
<script src="jquery.js" type="text/javascript"></script>
<script src="abc.js" type="text/javascript">
</script>
<link rel="stylesheets" type="text/css" href="abc.css"></link>
<style>h2{font-wight:bold;}</style>
<script>
$(document).ready(function(){
$("#img").attr("src", "kkk.png");
});
</script>
</head>
<body>
<img id="img" src="abc.jpg" style="width:400px;height:300px;"/>
<script src="kkk.js" type="text/javascript"></script>
</body>
</html>
Jadi inilah pertanyaanku:
- Bagaimana cara memuat halaman ini?
- Apa urutan pemuatannya?
- Kapan kode JS dieksekusi? (inline dan eksternal)
- Kapan CSS dieksekusi (diterapkan)?
- Kapan $ (dokumen). Sudah dieksekusi?
- Akankah abc.jpg diunduh? Atau apakah itu hanya mengunduh kkk.png?
Saya memiliki pemahaman sebagai berikut:
- Browser memuat html (DOM) pada awalnya.
- Browser mulai memuat sumber daya eksternal dari atas ke bawah, baris demi baris.
- Jika a
<script>
terpenuhi, pemuatan akan diblokir dan menunggu sampai file JS dimuat dan dieksekusi dan kemudian melanjutkan. - Sumber daya lain (CSS / gambar) dimuat secara paralel dan dieksekusi jika diperlukan (seperti CSS).
Atau seperti ini:
Browser mem-parsing html (DOM) dan mendapatkan sumber daya eksternal dalam susunan atau susunan seperti susunan. Setelah html dimuat, browser mulai memuat sumber daya eksternal dalam struktur secara paralel dan mengeksekusi, sampai semua sumber daya dimuat. Maka DOM akan diubah sesuai dengan perilaku pengguna tergantung pada JS.
Adakah yang bisa memberikan penjelasan terperinci tentang apa yang terjadi ketika Anda mendapat respons dari halaman html? Apakah ini bervariasi di berbagai browser? Adakah referensi tentang pertanyaan ini?
Terima kasih.
EDIT:
Saya melakukan percobaan di Firefox dengan Firebug. Dan itu ditampilkan sebagai gambar berikut: