1.defer標簽 只支持IE defer屬性的定義和用法: 屬性規定是否對腳本執行進行延遲,直到頁面載入為止。有的 javascript 腳本 document.write 方法來創建當前的文檔內容,其他腳本就不一定是了。如果您的腳本不會改變文檔的內容,可將 defer 屬性加入到 <script ...
1.defer標簽 只支持IE
defer屬性的定義和用法: 屬性規定是否對腳本執行進行延遲,直到頁面載入為止。有的 javascript 腳本 document.write 方法來創建當前的文檔內容,其他腳本就不一定是了。
如果您的腳本不會改變文檔的內容,可將 defer 屬性加入到 <script> 標簽中,以便加快處理文檔的速度。因為瀏覽器知道它將能夠安全地讀取文檔的剩餘部分而不用執行腳本,它將推遲對腳本的解釋,直到文檔已經顯示給用戶為止。
<script type="text/javascript" defer="defer"> alert(document.getElementById("p1").firstChild.nodeValue); </script>
2.async(async 屬性是 HTML5 中的新屬性。)
async 屬性規定一旦腳本可用,則會非同步執行。
註釋:async 屬性僅適用於外部腳本(只有在使用 src 屬性時)。
註釋:有多種執行外部腳本的方法:
如果 async="async":腳本相對於頁面的其餘部分非同步地執行(當頁面繼續進行解析時,腳本將被執行)
如果不使用 async 且 defer="defer":腳本將在頁面完成解析時執行
如果既不使用 async 也不使用 defer:在瀏覽器繼續解析頁面之前,立即讀取並執行腳本
<script type="text/javascript" src="demo_async.js" async="async"></script>
3.創建script,插入到DOM中,載入完畢後callBack;
function loadScript(url, callback){ var script=document.creatElment("script"); script.type="text/javascript"; if(script.readyState){ ie script.onReadyState=function(){ if(script.readyState ="load" || script.readyState = "complete"){ script.onReadyState=null; callback(); }else{ script.onload=function(){ callback(); } } } } script.src=url; document.body.appendChild(script); }