script中defer屬性

Js代碼

<button id="myButton1" onclick="alert('ok1')">test1</button>   javascript

<script>   java

myButton1.click();   編程

</script>   瀏覽器

<script defer>   ide

myButton2.click();   函數

</script>   性能

<button id="myButton2" onclick="alert('ok2')">test2</button>   spa

<script>   code

myButton3.click();   orm

</script>   

<button id="myButton3" onclick="alert('ok3')">test3</button>  

<button id="myButton1" onclick="alert('ok1')">test1</button>
<script>
myButton1.click();
</script>
<script defer>
myButton2.click();
</script>
<button id="myButton2" onclick="alert('ok2')">test2</button>
<script>
myButton3.click();
</script>
<button id="myButton3" onclick="alert('ok3')">test3</button>

Script中的Defer屬性
若是你是一個對系統性能比較關心和在乎的人,我想你應該會對Script腳本中的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腳本塊中的變量,不然的話會致使腳本錯誤的產生。

引用
DEFER是腳本程序強大功能中的一個「無名英雄」。你可能從沒有使用過它,可是看完這裏的介紹後,相信你就離不開它。它告訴瀏覽器Script段包含了無需當即執行的代碼,而且,與SRC屬性聯合使用,它還可使這些腳本在後臺被下載,前臺的內容則正常顯示給用戶。   最後請注意兩點:   一、不要在defer型的腳本程序段中調用document.write命令,由於document.write將產生直接輸出效果。   二、並且,不要在defer型腳本程序段中包括任何當即執行腳本要使用的全局變量或者函數。 加上 defer 等於在頁面徹底在入後再執行,至關於 window.onload ,但應用上比 window.onload 更靈活!
相關文章
相關標籤/搜索