天天看點

利用defer關鍵字讓網頁中的javascript推遲執行

我們有時候會在網頁中的<script>段中看到defer關鍵字,那麼它到底是派什麼用處呢?

defer從字面意思上來看就是延遲,推遲的意思。它的目的在于:

讓浏覽器在下載下傳腳本的時候就不必立即對其進行處理,而是繼續對頁面進行下載下傳和解析,

等到全部頁面下載下傳完成後執行JS腳本。這樣做有時候能夠提高下載下傳的性能。

那麼defer的應用有什麼呢?

我們經常會用innerHTML來動态給DOM元素加載JS,比如:

object.innerHTML = "<script" + ">"..."</script" + ">";

但是當你調用你這個新定義的動态JS經常會出錯,說還未定義,

解決方法是給<script>加上defer。

在下面的代碼中你可以試下把 defer去掉程式就會出錯:

利用defer關鍵字讓網頁中的javascript推遲執行

<HTML>

利用defer關鍵字讓網頁中的javascript推遲執行
利用defer關鍵字讓網頁中的javascript推遲執行
利用defer關鍵字讓網頁中的javascript推遲執行

<SCRIPT>

利用defer關鍵字讓網頁中的javascript推遲執行
利用defer關鍵字讓網頁中的javascript推遲執行
利用defer關鍵字讓網頁中的javascript推遲執行

    function insertScript()

利用defer關鍵字讓網頁中的javascript推遲執行

{

利用defer關鍵字讓網頁中的javascript推遲執行

        var sHTML = "<input type=button onclick=myAlert()" + " value='Click Me'><BR>";

利用defer關鍵字讓網頁中的javascript推遲執行

        var sScript="<SCRIPT defer>";

利用defer關鍵字讓網頁中的javascript推遲執行

        sScript = sScript + "function myAlert() { alert('Hello Javascript!') }";

利用defer關鍵字讓網頁中的javascript推遲執行

        sScript = sScript + "</SCRIPT" + ">";

利用defer關鍵字讓網頁中的javascript推遲執行

        ScriptDiv.innerHTML = sHTML + sScript;

利用defer關鍵字讓網頁中的javascript推遲執行

    } 

利用defer關鍵字讓網頁中的javascript推遲執行

</SCRIPT>

利用defer關鍵字讓網頁中的javascript推遲執行
利用defer關鍵字讓網頁中的javascript推遲執行

<BODY onload="insertScript();">

利用defer關鍵字讓網頁中的javascript推遲執行

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

利用defer關鍵字讓網頁中的javascript推遲執行

</BODY>

利用defer關鍵字讓網頁中的javascript推遲執行
利用defer關鍵字讓網頁中的javascript推遲執行

</HTML>

繼續閱讀