浏览器

来源:互联网 发布:空间皮肤psd源码 编辑:程序博客网 时间:2024/05/01 01:17

正常的网页加载流程是这样的。

  1. 浏览器一边下载HTML网页,一边开始解析
  2. 解析过程中,发现script标签
  3. 暂停解析,网页渲染的控制权转交给JavaScript引擎
  4. 如果script标签引用了外部脚本,就下载该脚本,否则就直接执行
  5. 执行完毕,控制权交还渲染引擎,恢复往下解析HTML网页
  6. 也就是说,加载外部脚本时,浏览器会暂停页面渲染,等待脚本下载并执行完成后,再继续渲染。原因是JavaScript可以修改DOM(比如使用document.write方法),所以必须把控制权让给它,否则会导致复杂的线程竞赛的问题。
  7. 如果有多个script标签,比如下面这样。

    <script src="1.js"></script><script src="2.js"></script>

    浏览器会同时平行下载1.js2.js,但是,执行时会保证先执行1.js,然后再执行2.js,即使后者先下载完成,也是如此。也就是说,脚本的执行顺序由它们在页面中的出现顺序决定,这是为了保证脚本之间的依赖关系不受到破坏。

    http://javascript.ruanyifeng.com/bom/engine.html#toc5
0 0