JS腳本defer的作用示例介紹
更新時間:2014年01月02日 16:38:32 作者:
defer作用是文檔加載完畢了再執(zhí)行腳本,這樣回避免找不到對象的問題,下面有個不錯的示例,感興趣的朋友可以參考下
復(fù)制代碼 代碼如下:
<script src="../cgi-bin/delscript.js" defer></script>
中的defer作用是文檔加載完畢了再執(zhí)行腳本,這樣回避免找不到對象的問題---有點問題
<button id="myButton" onclick="alert('ok')">test</button>
<script>
myButton.click();
</script>
<script>
myButton.click();
</script>
<button id="myButton" onclick="alert('ok')">test</button>
<script defer>
function document.body.onload() {
alert(document.body.offsetHeight);
}
</script>
加上 defer 等于在頁面完全在入后再執(zhí)行,相當(dāng)于 window.onload ,但應(yīng)用上比 window.onload 更靈活!
defer是腳本程序強大功能中的一個“無名英雄”。它告訴瀏覽器Script段包含了無需立即執(zhí)行的代碼,并且,與SRC屬性聯(lián)合使用,它還可以使這些腳本在后臺被下載,前臺的內(nèi)容則正常顯示給用戶。
--但是 文檔加載完畢了再執(zhí)行腳本
最后請注意兩點:
1、不要在defer型的腳本程序段中調(diào)用document.write命令,因為document.write將產(chǎn)生直接輸出效果。
2、而且,不要在defer型腳本程序段中包括任何立即執(zhí)行腳本要使用的全局變量或者函數(shù)。
一個常用的優(yōu)化性能的方法是:當(dāng)腳本不需要立即運行時,在<SCRIPT>標(biāo)簽中設(shè)置“defer”屬性。 (立即腳本沒有被包含在一個function塊中,因此會在加載過程中執(zhí)行。) 設(shè)置“defer”屬性后,IE就不必等待該腳本裝載和執(zhí)行完畢。這樣頁面加載會更快。一般來說,這也表明立即腳本最好放在function塊中,并在document或者body對象的onload 句柄中處理該函數(shù)。在有一些腳本需要依賴用戶操作而執(zhí)行時----例如點擊按鈕,或者移動鼠標(biāo)到某個區(qū)域----使用該屬性非常有用。但當(dāng)有一些腳本需要在頁面加載過程中或加載完成后執(zhí)行,使用defer屬性得到的好處就不太大。
都是defer惹的禍,這兩天網(wǎng)站查看全文出錯的原因
<p style='line-height: 150%;text-indent: 15pt;'>上周末,本站投放了Google廣告,當(dāng)時為了防止廣告的投入延長頁面導(dǎo)入的時間,修改了下Google Ad代碼,<script>使用了defer延遲導(dǎo)入廣告,我一直使用的是FireFox瀏覽器,一直沒發(fā)現(xiàn)有問題,今天,有朋友上本站查資料,她用的是Maxthon,告訴我一查看文章,頁面就一閃就過去了,這才知道有問題,我說這兩天這么網(wǎng)站的訪問一直在掉呢,一查原因,才發(fā)現(xiàn)是defer的原因,因為在Firfox中defer好象是失效的,頁面實際還是原始內(nèi)容一起載入了,而在IE中,由于延后載入腳本,對于Google Ad腳本來說,其使用的是Document.write的寫入方法,并且因為defer的原因,Google AD的腳本檢測為iframe了,所以當(dāng)獲取到Google 廣告的實際內(nèi)容的時候就把整個頁面給覆蓋了,也就造成了查看全文一閃而過的現(xiàn)象。</p>
<p style='line-height: 150%;text-indent: 15pt;'>這都怪我修改了代碼沒這么測試,以后不管改什么都需要在IE和FireFox中都測試通過才可以,對于這兩天造成大家的訪問困難致以最最真摯的道歉!</p>
<p style='line-height: 150%;text-indent: 15pt;'>另:推薦大家使用FireFox訪問本站,訪問和解析速度以及頁面布局的一致性都更好!</p>
相關(guān)文章
javascript中的遍歷for in 以及with的用法
這篇文章主要介紹了javascript中的類初始化,遍歷for in 以及with的用法,需要的朋友可以參考下2014-12-12分享javascript實現(xiàn)的冒泡排序代碼并優(yōu)化
本文給大家匯總介紹了幾個個人收藏的JavaScript實現(xiàn)冒泡排序的代碼,都是非常的不錯,有需要的小伙伴可以參考下2016-06-06Javascript學(xué)習(xí)筆記之 對象篇(四) : for in 循環(huán)
如同 in 運算符一樣,使用 for in 循環(huán)遍歷對象屬性時,也將往上遍歷整個原型鏈。2014-06-06