浏览器加载时间线
Posted freesfu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器加载时间线相关的知识,希望对你有一定的参考价值。
浏览器加载时间线
创建
document
对象,添加节点对象(也就是开始搭建dom
结构树),此时document.readyState
="loading"
遇到
link
外部css
文件,创建新的线程加载,继续解析文档遇到
script
引入外部js,并且如果没有设置async
、defer
,浏览器加载该js文件时会阻塞html
的解析过程,一直等待js加载并执行完成遇到
script
外部js,并且设置有async
、defer
,浏览器创建新线程加载,并且继续解析文档,对于async
属性的脚本,脚本加载完成以后立即执行,defer
则在dom结构搭建完成以后执行(对于异步脚本,禁止使用document.write()
)遇到
img
标签,正常搭建dom
结构,并且创建新线程加载src
文档解析完成,状态位改变,
document.readyState
="interactive"
资源都加载完成,
DOMTree
搭建完成,执行defer
脚本之后
document
对象触发DOMContentLoaded
事件,标志着该页面加载渲染完成,并且该事件只能够通过addEventListener
绑定当页面全部加载执行完成以后。更准确的说应该是
DOMContentLoaded
事件触发以后,状态位改变document.readyState
="complete"
此后,浏览器以异步响应方式处理用户输入、网络事件等
以上是关于浏览器加载时间线的主要内容,如果未能解决你的问题,请参考以下文章