天天看點

JS腳本defer的作用

<script src="../cgi-bin/delscript.js" defer></script>

中的defer作用是文檔加載完畢了再執行腳本,這樣回避免找不到對象的問題

<script defer>

function document.body.onload() {

 alert(document.body.offsetHeight);

}

</script>

加上 defer 等于在頁面完全在入後再執行,相當于 window.onload ,但應用上比 window.onload 更靈活!

defer是腳本程式強大功能中的一個“無名英雄”。它告訴浏覽器Script段包含了無需立即執行的代碼,并且,與SRC屬性聯合使用,它還可以使這些腳本在背景被下載下傳,前台的内容則正常顯示給使用者。

--但是 文檔加載完畢了再執行腳本

最後請注意兩點:

1、不要在defer型的腳本程式段中調用document.write指令,因為document.write将産生直接輸出效果。

2、而且,不要在defer型腳本程式段中包括任何立即執行腳本要使用的全局變量或者函數。

一個常用的優化性能的方法是:當腳本不需要立即運作時,在<SCRIPT>标簽中設定“defer”屬性。 (立即腳本沒有被包含在一個function塊中,是以會在加載過程中執行。) 設定“defer”屬性後,IE就不必等待該腳本裝載和執行完畢。這樣頁面加載會更快。一般來說,這也表明立即腳本最好放在function塊中,并在document或者body對象的onload 句柄中處理該函數。在有一些腳本需要依賴使用者操作而執行時----例如點選按鈕,或者移動滑鼠到某個區域----使用該屬性非常有用。但當有一些腳本需要在頁面加載過程中或加載完成後執行,使用defer屬性得到的好處就不太大。

繼續閱讀