1. 程式人生 > >HTML加載順序

HTML加載順序

文字 9.png char brush dom元素 img fun js代碼 info

從上到下順序加載

從上到下順序加載

從上到下順序加載

JS的加載執行會阻塞DOM樹的解析和渲染

  原因 : JS可能會修改DOM樹的結構,所以會等執行完JS代碼後才繼續

  改善方法 : 可以把js代碼放到</body>前,這樣先生成DOM文檔,再加載運行js代碼,不會因為阻塞而影響頁面顯示速度.

CSS加載不會阻塞DOM樹的解析,但是會阻塞DOM樹的渲染

  原因 : CSS不會修改DOM樹的結構,但會修改DOM元素的樣式

CSS加載也會阻塞JS代碼的執行

  詳細看 : https://www.cnblogs.com/chenjg/p/7126822.html

示例

<html>
<head>
	<meta http-equiv="charset" content="utf-8">
	<script>
	//onload是在整個頁面加載完畢後執行
	window.onload = function (){
		text.innerHTML=text.innerHTML+"->這是onload";
	}
	</script>
</head>
<body>
	<p id="item">原文</p>
	<script>
		//獲取<p>元素, 放下邊是因為如果放在<p>元素前,因為<p>的DOM對象還沒加載,會獲取不到<p>元素
		var text = document.getElementById("item");
		
		text.innerHTML=text.innerHTML+"->加載圖片`前";
	</script>
	<img src="./aaa.jpg"></img>
	<script>
		text.innerHTML=text.innerHTML+"->加載圖片_後";
	</script>
</body>
</html>
<style type="text/css">
	/*這段CSS執行後,才會繼續執行下面的JS代碼*/
	p {color: blue}
</style>
<script>
	text.innerHTML=text.innerHTML+"->顏色變紅前";
</script>
<style type="text/css">
	/*放在最下邊,所以最後執行*/
	p {color: red}
</style>

  運行結果如下圖:

技術分享圖片

文字描述一下加載順序:

  "原文" --> "->加載圖片`前" --> 圖片被顯示 --> "->加載圖片_後" --> 文本變藍色 --> "->顏色變紅前" --> 文本變紅色

可以自己復制上邊的代碼,打斷點試試看是不是這個順序.

HTML加載順序