浏览器加载 html 页面过程

1. dom 解析跟 css 解析,互不影响

2. dom 渲染,页面 dom 解析完形成 dom 树,css 解析完形成 cssom 树,然后 dom、cssom 合成 render 树,这个过程是  dom 渲染

3. js 会操作 dom 跟 css,故 js 会影响解析和渲染过程,如下三种情况:

  • <script> ,dom 树解析遇到script 标签,立即停止解析,下载并运行 js 脚本,待 js 执行完毕,继续 dom 解析
  • <script defer>,这种是延迟执行脚本,dom 树解析时遇到此标签,立即下载该 js 脚本,并保持 dom 解析同步进行。

   dom 解析完毕后,按照 js 脚本顺序,依次执行 js 脚本。然后触发 document 的 DOMContentLoaded 事件。

  • <script async>,异步执行脚本,dom 渲染跟 js 互不干扰,DOMContentLoaded 事件 跟 js 脚本无关。多个 js 脚本执行顺序不定。

 

posted on 2021-06-15 17:49  一直小飞猫  阅读(2988)  评论(0编辑  收藏  举报

导航