<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