我們有時候會在網頁中的<script>段中看到defer關鍵字,那麼它到底是派什麼用處呢?
defer從字面意思上來看就是延遲,推遲的意思。它的目的在于:
讓浏覽器在下載下傳腳本的時候就不必立即對其進行處理,而是繼續對頁面進行下載下傳和解析,
等到全部頁面下載下傳完成後執行JS腳本。這樣做有時候能夠提高下載下傳的性能。
那麼defer的應用有什麼呢?
我們經常會用innerHTML來動态給DOM元素加載JS,比如:
object.innerHTML = "<script" + ">"..."</script" + ">";
但是當你調用你這個新定義的動态JS經常會出錯,說還未定義,
解決方法是給<script>加上defer。
在下面的代碼中你可以試下把 defer去掉程式就會出錯:

<HTML>

<SCRIPT>
function insertScript()
{
var sHTML = "<input type=button onclick=myAlert()" + " value='Click Me'><BR>";
var sScript="<SCRIPT defer>";
sScript = sScript + "function myAlert() { alert('Hello Javascript!') }";
sScript = sScript + "</SCRIPT" + ">";

ScriptDiv.innerHTML = sHTML + sScript;

}

</SCRIPT>


<BODY onload="insertScript();">

<DIV ID="ScriptDiv"></DIV>

</BODY>


</HTML>