- 创建Document对象, 开始解析web页面. 解析HTML元素和它们的文本内容之后, 添加Element对象和Text节点到文档中. 这个阶段
document.readyState = "loading"
. - 遇到link外部CSS, 创建线程加载, 并继续解析文档;
- 遇到script外部
js
, 并且没有设置defer async
, 加载js
文件, 阻塞, 等待js
文件加载完毕并执行该脚本, 然后继续解析文档; - 遇到script外部
js
, 并且设置了defer async
, 浏览器创建线程加载, 并且继续解析文档, 对于async
的脚本, 加载完成立即执行. (异步加载的时候禁止使用document.write()
, 因为其有清空dom树
的能力, 甚至变态到把写他自己的script标签都删除掉) - 遇到
img
, 先正常解析dom
结构, 在异步加载src
, 并继续解析文档; - 当文档解析完成,
document.readyState = "interactive"
- 文档解析完成后, 所有设置有defer的脚本会按照顺序依次执行(同样禁止使用
document.write()
). - document对象触发
DOMContentLoaded
事件; - 当所有的异步脚本加载完毕并执行,
img
加载完毕,document.readyState = "complete"
, window对象触发load事件. - 全部过程完成, 用户可以操作了.
js加载时间线
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 本文总结一下浏览器在 javascript 的加载方式。关键词:异步加载(async loading),延迟加载(...