js中defer簡單理解

來源:互聯網
上載者:User

<script defer="true">alert("載入完頁面元素後再執行js");</script>

<script src='...js' defer="true"></script>

defer只是載入完成頁面元素後在執行js指令碼。

其實就是簡單的利用defer屬性,讓瀏覽器讀JS指令碼的時候完全不等指令碼開始讀就開始讀下面的圖片啊,html代碼了。然後讓js指令碼自己在那裡慢慢讀取完以後再執行。

給外鏈的js指令碼添加defer="true",像下面這個這樣就可以了:

<script defer="true" src="JavaScript.js" type="text/javascript"/>

特別是比較大的指令碼,提高整個網頁的載入速度是非常明顯的

應用執行個體解決:document.getElementById為空白或不是對象

1. 'null'為空白或不是對象:

<script type="text/javascript"> 裡面加個defer=true屬性試試看,

即:<script type="text/javascript" defer=true>

2. document.getElementById為null

原因: var titab=document.getElementById("titletab");沒有取到對象
解決辦法:
1.在錯誤語句的下面加上alert(titab);調試語句,看看是否有訊息框彈出
2.如果沒有彈出,檢查HTML代碼中的是否存在"id=titletab"的<table>標籤(要仔細哦,一個字母都不能錯的)
3.如果標籤存在,那麼考慮<script>程式碼片段的位置問題,切記包含有類似getElement代碼<script>程式碼片段 必須出現在HTML的Element之後也就是說你把<script>程式碼片段放到<html>標籤之後然後嘗試

使用defer是應注意:

注意defer="true"還可以用作defer="defer",似乎使用defer="defer"比較普遍,我查看一個微軟的文檔,好像XTHML格式的網頁用defer="true"比較恰當。

另外注意,defer="true"這個東西不要在指令碼程式段中調用document.write命令,因為將產生直接輸出效果

如果不顯式聲明 defer ,則其預設值 是false

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.