2011-02-27 55 views
4

任何人都可以告訴我爲什麼下面的頁面在加載時不會觸發警報?如果我使用window.onload而不是document.onload它可以工作。爲什麼會有這種差異?爲什麼window.onload在document.onload不工作時工作?

<!DOCTYPE html> 
<html> 
<head> 
<script type="text/javascript"> 

document.onload = function() { 
    alert('Test'); 
} 

</script> 
</head> 
<body> 
</body> 
</html> 
+1

http://stackoverflow.com/questions/4584373/difference-between-window-loadfunction-and-document-readyfunction – 2011-02-27 20:18:03

回答

7

最簡單的答案是,它只是沒有這樣設計。瀏覽器在「end of the document loading process」處執行附加到window.onload的功能。它不會嘗試執行附加到document.onload的功能。

可能指定一個函數document.onload但瀏覽器不會做任何特殊的事情。

有些事情要記住(假設你剛分配的功能,一方或另一方的window.onloaddocument.onload):

  1. window.onload === onload
  2. window.onload !== document.onload
  3. window !== document
+0

所以這是要考慮它的正確方法:文檔對象*不*有一個onload方法......但在加載頁面的過程中沒有一點是這種方法叫......但是,在另一方面,加載頁面窗口的onload方法被調用後...我是新來的JavaScript,並試圖找出如何概念化的東西 – zjmiller 2011-02-27 20:50:41

+0

@zjmiller - 右邊,你可以* *分配給'document.onload'功能,但瀏覽器不會對該功能做任何特殊的處理。訣竅是分配給'window.onload'觸發特殊行爲。 'window'的'onload'屬性正好是瀏覽器在文檔加載後查找要調用的函數的地方。 – 2011-02-27 21:02:01

1

事件處理程序是onloaddocument.onload。它直接掛在window對象(這是默認對象)之外。

+0

文檔對象沒有onload方法嗎? – zjmiller 2011-02-27 20:29:19