2011-08-13 87 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將被解析。所有不需要正確顯示你身邊的腳本都應該加載到你身邊。 –