首頁  >  文章  >  web前端  >  javascript中defer是什麼

javascript中defer是什麼

醉折花枝作酒筹
醉折花枝作酒筹原創
2021-07-21 14:47:593228瀏覽

defer告訴瀏覽器Script段包含了無需立即執行的程式碼,並且與SRC屬性聯合使用,它還可以使這些腳本在後台被下載,前台的內容則正常顯示給用戶;語法「< ;script defer>js程式碼2cacc6d41bbb37262a98f745aa00fbf0」。

javascript中defer是什麼

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

很多人都已經把Javascript的用的爐火純青了,但見到defer未必就知道他是做什麼用的;很多人也都遇到過這樣的問題,需要直接執行別且操作DOM物件的js 總是報找不到物件的錯誤,原因大家也都知道就是頁面還有沒有載入完畢,js的操作對象還在下載中。但很多人都不知道,加上defer標籤就能輕易的解決這個問題。

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

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

<button id="myButton" onclick="alert(&#39;ok&#39;)">test</button>
<script>
myButton.click();
</script>

<script>
myButton.click();
</script>
<button id="myButton" onclick="alert(&#39;ok&#39;)">test</button>

<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型腳本程式段中包含任何立即執行腳本要使用的全域變數或函數。

一個常用的最佳化效能的方法是:當腳本不需要立即執行時,在03c6714b8e3ee3238fc596020c4901e1標籤中設定「defer」屬性。 (立即腳本沒有被包含在一個function區塊中,因此會在載入過程中執行。) 設定「defer」屬性後,IE就不必等待該腳本裝載和執行完畢。這樣頁面載入會比較快。一般來說,這也表示立即腳本最好放在function區塊中,並在 document或body物件的onload 句柄中處理函數。在有一些腳本需要依賴使用者操作而執行時----例如點擊按鈕,或移動滑鼠到某個區域----使用該屬性非常有用。但當有一些腳本需要在頁面載入過程中或載入完成後執行,使用defer屬性得到的好處就不太大。

script中的defer屬性預設情況下是false的。依照DHTML程式設計寶典中的描述,對於Defer屬性是這樣寫的:

Using the attribute at design time can improve the download performance of a page because the browser does not need to parse and execute the script and can continue downloading and parsing the page instead.

也就是說:如果是編寫腳本的時候加入defer屬性,那麼瀏覽器在下載腳本的時候就不必立即對其進行處理,而是繼續對頁面進行下載和解析,這樣會提高下載的效能。

這樣的情況有很多種。例如你定義了很多javascript變量,或是在引用檔案(.inc)中寫了很多的腳本需要處理,那不妨在這些腳本中加入defer屬性,對效能的提高肯定有所幫助。

舉例如下:

<script language="javascript" defer>
var object = new Object();
....
</script>

因為defer屬性預設是為false的,那麼在這裡

<script language="javascript" defer>

明確聲明defer屬性後等同於

<script language="javascript" defer=true>

在聲明了defer屬性之後,需要判斷是否有別的變數引用了defer腳本區塊中的變量,否則的話會導致腳本錯誤的產生。

【推薦學習:javascript高階教學

#

以上是javascript中defer是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn