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.此后,以异步响应方式处理用户输入、网络事件等
原文:https://www.cnblogs.com/chuangqianmingyueguang/p/12093754.html