2009-10-30 47 views
0

爲了提高速度,我試圖決定是否將我的JavaScript放在<head>或我的網站的</body>之前。我更喜歡頭部,而不關心額外的HTTP請求,只是這個腳本的行爲。JavaScript在這種情況下的表現如何?

下面是兩個代碼段,其中被裝回到後端(谷歌分析):

腳本1:

// Loaded externally: 
// <script type="text/javascript" src="google_analytics_1.js"></script> 

var gaJsHost = (
    ("https:" == document.location.protocol) ? 
    "https://ssl." : 
    "http://www." 
); 

document.write(unescape(
    "%3Cscript src='" + 
    gaJsHost + 
    "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E" 
)); 

腳本2:

// Loaded externally: 
// <script type="text/javascript" src="google_analytics_2.js"></script> 

try { 
    var pageTracker = _gat._getTracker("UA-0000000-0"); 
    pageTracker._trackPageview(); 
} 
catch(err) { } 

通過上面的代碼,JavaScript是否會延遲發送頁面的其餘部分,直到它檢索到ga.js,或者它會說:「好吧,我已經請求排隊等候ga.js,現在我將繼續發送頁面的其餘部分,同時等待它下載到客戶端...」?

我的直覺告訴我它是線性的,並且該頁面將被延遲,直到ga.js已被客戶端完全下載。是對的嗎?

+0

你的問題不是很清楚。 JavaScript不是「發送」任何地方的任何頁面。 JavaScript是瀏覽器正在加載(並正在執行)的頁面的一部分。 JavaScript代碼可以在頁面被解析時修改頁面,這就是您的第一個代碼片段中的「document.write()」調用。當您修改文檔並在其中寫入'

0

Nop。它不會被延遲。它會排隊第一個請求,並繼續第二個請求,實際上它是處理它的瀏覽器。

+0

哇,真的!?聽到這個我有點驚訝。 =) – Jeff 2009-10-30 19:19:28