2011-08-13 88 views
7

以下行是从官方的jQuery网站HTML解析顺序/脚本执行顺序

<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。如果那是真的,无论如何,第一行是什么?

回答

12

脚本按它们在文档中的顺序执行。在执行后面的脚本之前,浏览器会等待脚本加载。

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

+0

ahha ...明白了。谢谢。 – kae

1

是的,它会解析任何html等待脚本加载和解析。这就是为什么您应该在页面末尾加载外部脚本的原因之一,因此脚本不会阻止html呈现。

+0

好的,关于脚本放在哪里,顶部或底部:

,解析器是否会等待脚本被加载来解析div? YSlow建议将脚本放在底部,但我看到所有那些不遵循此规则的BIG网站。那么我应该在什么时候或什么样的脚本放在底部? – kae

+1

是的,首先脚本将被加载并执行,然后div将被解析。所有不需要正确显示你身边的脚本都应该加载到你身边。 –