1. 创建Document对象,开始解析web页面,解析HTML元素和字符数据,添加Element节点和text节点到Document中,此时,document.readyState = loading

 

2.遇到 link 外部 CSS,创建线程加载,并继续解析文档

 

3.遇到 script 外部Js:

(1)未设置 async、defer

浏览器加载Js,并堵塞,等待Js加载完成后执行脚本,然后继续解析文档

(2)设置 async

异步加载脚本,脚本加载完立即执行脚本

(3)设置defer

异步加载脚本,等待文档解析完执行脚本

 

4.遇到 img 等,首先解析dom结构,然后浏览器异步加载src,并继续解析文档

 

5.文档解析完成,此时document.readyState = ‘interactive’

 

6.设置有defer的脚本执行

 

7.documen对象触发DOMContentLoaded事件,标志着程序执行由同步脚本执行阶段,转化为事件驱动阶段

 

8.文档和所有子资源已完成加载,document.readyState = ‘complete’ ,window触发load事件

 

9.此后,以异步响应方式处理用户输入、网络事件等