2013-12-17 5 views
0

이상하게 보입니다 ... "body" 행을 수정할 수없는 HTML 페이지가 있습니다 (다른 파일에서 PHP가 포함되어 있기 때문에). 파일에서 닫는 "/body" 태그 앞에, ​​나는 자바 스크립트 기능이 :때로는 JavaScript 함수가 호출되지 않습니다.

<script language="JavaScript"> 
function doSomething() { 
    /* some code */ 
} 
</script> 

나는이 기능은 페이지가 표시 될 때 실행하고 나는 "몸"라인을 수정할 수 없기 때문에 싶은 때문에, 작은 이미지를 추가하고로드 할 때이 함수를 호출했습니다.

<img src="transp.gif" border="0" width="0" height="0" onload="doSomething();" /> 

문제는 때때로 함수가 호출되고 때로는 호출되지 않습니다. 심지어 적절한 "alert" 성명을 통해이를 확인했습니다 ... 내가 뭘 잘못하고 있니? "onload"이 일관되게 실행되지 않는 이유는 무엇입니까?

+1

왜 올바른 온로드를 사용하지? 'window.onload = function() {doSomething()};'. – DontVoteMeDown

+0

이미지가 캐시에 있으면 onload가 호출되지 않는다고 생각합니다. 게시 된 제안 중 하나를 사용하는 것이 좋습니다. – Fred

답변

2

문제는 DOM에 들어가기 전에 함수를 호출하려고한다는 것입니다. ...로드 기능 후에

<script language="JavaScript"> 
function doSomething() { 
    /* some code */ 
} 
doSomething(); 
</script> 

를 "해봐요"를 호출하지만 깨끗한 솔루션을 사용하는 것입니다 :

<script> 
window.onload=function(){ 
    /* some code */ 
}; 
</script> 
+0

'windows.onload'를 포함하고있는 위의 스크립트는 HTML의 본문 섹션에있을 수 있습니까? –

+0

확실한 @FreeBud,하지만 window.onload ('s'없이) ;-) – Mackan

+0

고마워! 지금은 효과가있는 것 같습니다. –

2

는 페이지 (그리고 IMG가)

<img src="transp.gif" border="0" width="0" height="0" /> 
+0

이벤트 리스너는 다른 onload func가 있더라도 작동합니다. – Zaffy

1

는 다음을 시도 해 봤나 이벤트없이

<script> 
window.onload = function(){ 
    //code 
}; 
</script> 

와 IMG를로드 할 때 해고 이벤트 window.load를 사용할 수 있습니까?

<html> 
<body> 
<script type="text/javascript"> 
window.onload = function() { 
//your code here 
} 
</script> 
</body> 
</html> 
관련 문제