2011-07-07 65 views
1

我不想在啓動時調用JavaScript函數。原因很簡單,它會減少初始下載大小,並且頁面將顯得更快。要做到這一點我用頭段內的下列代碼..如何推遲加載JavaScript文件?

<script type="text/javascript"> 
// Add a script element as a child of the body 
function downloadJSAtOnload() { 
var element = document.createElement("script"); 
element.src = "deferredfunctions.js"; 
document.body.appendChild(element); 
} 

// Check for browser support of event handling capability 
if (window.addEventListener) 
window.addEventListener("load", downloadJSAtOnload, false); 
else if (window.attachEvent) 
window.attachEvent("onload", downloadJSAtOnload); 
else window.onload = downloadJSAtOnload; 
</script> 

但它沒有工作......請幫我

+0

相關:http://stackoverflow.com/questions/912711/jquery-to-load-javascript-file-dynamically – deepmax

回答

1
document.head.appendChild(element) 
4

通常情況下,最好是把腳本後,你的身體,並立即打電話給他們。

腳本阻止加載頁面,因此將它們放在body的末尾允許頁面快速加載,並且JavaScript將加載頁面已準備就緒。

+0

有人甚至建議在'body'元素之後添加另一個'head'元素,並將腳本放入前者。這是不錯的做法嗎? – katspaugh

+0

@katspaugh我會避免增加第二個頭,因爲它不是標準的,並沒有好處。 – timw4mail

1

您可以使用<script defer>(延遲HTML腳本標記的屬性)。

例子:

<script src="link/to/yourfile.js" defer></script> 

defer將下載HTML解析過程中的文件和解析器完成之後纔會執行。延遲腳本也保證按它們出現在文檔中的順序執行。