2012-09-24 65 views
4

這方面的一個例子是谷歌分析:爲什麼外部js腳本經常在HTML頁面的底部加載document.write()?

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

難道是一樣好只是使用該文本值替換執行document.write():

<script type="text/javascript" src="http://www.google-analytics.com/ga.js"> 

?我猜測標籤是與document.write()一起輸出的,因爲gaJsHost('http://www.')的值並未提前知道。但是如果知道,是否有理由用document.write()輸出script標籤而不是直接包含它?

回答

3

腳本默認情況下,當遇到一個html頁面時,阻止加載頁面的其餘部分。只有當他們完成下載和執行後,頁面的其餘部分纔會繼續加載。從高性能的Javascript通過Nicholas C. Zakas

這是頁面的生命週期的必要組成部分,因爲在執行腳本 可能會導致更改的頁面。典型示例是 在頁面中間使用document.write()(通常由 廣告使用)。

通過動態插入腳本,如上所述,您可以克服該行爲 - 無頁面阻塞 - 負載異步發生。

通過把東西放在頁面的底部,確保html和css在javascript之前加載。這樣,當javascript加載時,用戶可以看到該頁面。

這是關於性能。

2

確保瀏覽器在頁面呈現後加載它們。

這是一個表現的事情。

0

有幾個可能的原因: 1.確保在加載javaScript文件之前頁面上已存在DOM的某些部分。這可以防止您嘗試操作未創建的DOM元素。 2.加快速度;瀏覽器在加載javaScript時通常會進入單線程模式,因此如果您在開始時並不需要它,最好將其延遲。

0

這是將腳本生成的文本添加到頁面中的最快方式[瀏覽器不需要修改DOM結構]。因此用於插入廣告腳本[如果廣告服務器速度較慢,則下降]。添加用戶生成的數據通過添加隨機值來防止緩存。

基本上用於它的速度。