2011-02-27 2 views
4

다음 페이지에서로드 할 때 경고가 표시되지 않는 이유는 누구에게 말해 줄 수 있습니까? document.onload 대신 window.onload을 사용하면 제대로 작동합니다. 왜이 차이가 있습니까?document.onload가 window.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 –

답변

7

가장 간단한 대답은 단지 그렇게 설계되지 않았다는 것입니다. 브라우저는 "end of the document loading process"에 window.onload에 첨부 된 기능을 실행합니다. document.onload에 첨부 된 함수를 실행하려고 시도하지 않습니다.

은 기능을 document.onload에 할당하지만 브라우저는 특별한 기능을 수행하지 않습니다.

염두에 두어야 할 몇 가지를 (당신은 단지 하나 window.onload의 다른 또는 document.onload에 기능을 할당 한 가정)

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

이렇게 생각하면 옳은 방법입니다. 문서 객체 *는 onload 메서드를 가지고 있지만 ... 페이지를로드하는 과정에서 어떤 시점에서도 호출 된이 메서드는 없습니다. 반면에, 페이지를로드 한 후 윈도우의 onload 메소드가 호출됩니다 ... 저는 자바 스크립트를 처음 사용하고 어떻게 개념화하는지 알아 내려고했습니다. – zjmiller

+0

@zjmiller - 맞아요. * document.onload에 함수를 할당 할 수는 있지만 브라우저는 그 기능으로 특별한 것을하지 않을 것입니다. 그 트릭은'window.onload'에 할당하면 특별한 행동을 유발한다는 것입니다. 'window'의'onload' 속성은 브라우저가 문서가로드되면 호출 할 함수를 찾는다. –

1

이벤트 핸들러는 onload하지 document.onload입니다. 이는 window 개체 (기본 개체)에서 직접 중단됩니다.

+0

문서 개체에 onload 메서드가 없습니까? – zjmiller

관련 문제