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
已被客戶端完全下載。是對的嗎?
你的問題不是很清楚。 JavaScript不是「發送」任何地方的任何頁面。 JavaScript是瀏覽器正在加載(並正在執行)的頁面的一部分。 JavaScript代碼可以在頁面被解析時修改頁面,這就是您的第一個代碼片段中的「document.write()」調用。當您修改文檔並在其中寫入'
Nop。它不會被延遲。它會排隊第一個請求,並繼續第二個請求,實際上它是處理它的瀏覽器。
來源
2009-10-30 19:05:11 hminaya
哇,真的!?聽到這個我有點驚訝。 =) – Jeff 2009-10-30 19:19:28