HTML解析顺序/脚本执行顺序

时间:2011-08-13 18:01:57

标签: javascript jquery

以下几行来自官方jQuery网站

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="http://code.jquery.com/jquery-1.4.2.min.js"><\/script>');</script>

我不确定HTML解析顺序,或者我应该说脚本执行顺序。

问题是:第2行是否会等待第1行加载?我对此表示怀疑。

如果第1行仍在加载(比如它是3000KB,并且需要很长时间),则第2行已经执行。 window.jQuery总是为false,因此总是包含第二个js。如果这是真的,无论如何,第1行是什么?

3 个答案:

答案 0 :(得分:11)

脚本按文档中的顺序执行。浏览器在执行脚本之前等待脚本加载。

如果不是这种情况,则不能让任何两个文件相互依赖。您必须将所有内容放在同一个文件中,否则脚本执行顺序几乎是随机的。

答案 1 :(得分:1)

是的,它将等待解析任何html,直到加载和解析脚本。这就是为什么你应该在页面末尾加载externa脚本以便脚本不会阻止html渲染的原因之一。

答案 2 :(得分:0)

让我们谈谈更传统的处理方式,而不使用属性deferasync

浏览器将:

  1. 下载script,阻止其他资源下载

  2. 解析脚本

  3. 执行脚本

  4. 参见Ch1,从High Performance JavaScript

    加载和执行

    这是另一个很好的参考资料12.3。从JavaScript: The Definitive Guide, 4th Edition

    执行JavaScript程序