2016-02-16 74 views
-2

我從來沒有完全理解這一點,如果JavaScript負載的網頁加載後不加載任何函數,那麼使用window.onload有什麼意義?JavaScript window.onload有什麼意義?

window.onload = function() { 
 
    alert("hello"); 
 
};

+2

它會告訴你,當頁面加載... – epascarello

+0

的JavaScript'''。通過將代碼放在「加載」處理程序中,延遲執行直到瀏覽器加載了所有頁面構件(css,圖像等)。 – Pointy

+0

但是,您不需要知道什麼時候通過創建一個新的函數來加載它,這就是註釋的用途。 –

回答

1

From MDN:

在文檔加載過程結束時的負載事件觸發。在 這一點上,文檔中的所有對象都在DOM中,並且所有圖像,腳本,鏈接和子幀都已完成加載。

所以,如果你需要確保一切都加載,比這是事件,你需要等待着火。如果您準備好文檔或將腳本放在主體底部,則並非所有內容都可以完全加載。

你爲什麼要使用它。早在過去,這是知道頁面加載的唯一真正方法。但主要原因在於,如果您確實需要依靠所有內容來計算元素的高度/位置,則需要確保它們完全在那裏並呈現。如果你準備好了,高度可能會不同。

簡單的測試是在瀏覽器中加載大圖。讀取身體末端的高度,準備好文件並上傳,看看數值是什麼。 (注意,一旦圖像緩存,瀏覽器將具有合適的高度)

var img = document.getElementById("x"); 
 
console.log("inline:", x.height); 
 

 
$(function(){ console.log("ready:", x.height); }); 
 

 
window.addEventListener("load", function() { 
 
    console.log("load:", x.height); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<img id="x" src="https://upload.wikimedia.org/wikipedia/commons/7/74/Earth_poster_large.jpg?ddddddd" />

0

,如果你在一個單獨的文件中有一個腳本,或者如果你有,你要首先加載其他資源不同的文件可能是有用的。