js时间线:
浏览器解析html页面过程中,整个js运行的状态。
三个状态:
loading(准备开始),interactive(解析中),complete(解析完成)
JavaScript时间线:
loading: 创建了document ,节点 、文本,准备将所有节点注入到document中
interactive: 解析html :
1、遇到css(头部样式、link),独立开启一个线程下载 ;创建cssDom继续解析
2、遇到js :<script></script>标签或者<script src=“1.js”> ,终止解析(html解析阻塞)
<script></script>:一边读取 一边执行
<script src=“1.js”>:先下载,执行js
3、遇到js :<script async src=“1.js”> (异步:独立一个线程) ,
继续解析(边解析边下载),文件下载完毕会立即执行js(解析停止:html解析阻塞),带js
执行完毕继续解析。
4、遇到js :<script defer src=“1.js”></script>,继续解析(不会引起阻塞)
defer(会先下载文件),html解析完毕后在执行js
5、继续解析、img iframe等 会先解析结构;src 异步处理下载资源
6、html 结构解析完成
document.readState = interactive:
底层会触发一个事件:DOMContentLoaded (只能用事件监听器绑定)
complete:解析完成
1、填充图片、资源填充
document.readState=complete