2012-09-14 3 views
1

나는 웹 사이트를 개발하고 있는데, 외부 JavaScript 파일을 가지고있어 사이트의 모든 페이지에 링크되어 window.onload 이벤트가 시작되었습니다. 자바 스크립트는 인라인 자바 스크립트가없는 모든 페이지에서 잘 실행됩니다.두 가지 기능 (하나는 외부 파일, 하나는 인라인 자바 스크립트) window.onload에

인라인 JavaScript가 포함 된 모든 페이지에는 window.onload 이벤트가 발생하면 실행되는 JavaScript 함수도 포함되어 있습니다.

문제는 window.onload가 실행될 때 외부 JavaScript가 실행되지 않고 내부 JavaScript에서만 실행된다는 것입니다. 인라인 JavaScript 함수가 외부 JavaScript 파일의 함수를 덮어 쓰는 것처럼 보입니다.

외부 자바 스크립트 파일이 처음 실행 된 다음 인라인 JavaScript가 실행된다는 것을 알고 있습니다. 어쨌든 window.onload에서 두 함수를 모두 실행할 수 있습니까?

+0

어떤 종류의 'window.onload = function() {}'문법을 사용하고 있습니까? – Ian

+1

'window.onload'에 둘 이상의 함수를 할당 할 수 없습니다. 동일한 이벤트에 대한 핸들러가 여러 개인 경우 전용 이벤트 API를 사용해야합니다. 그러한 API가 포함 된 라이브러리 (예 : jQuery)를 권합니다. –

답변

2

두 번째 이런 일을 실행하는 스크립트 변경에 대한 방법 : jQuery처럼

var onload = function() { 
    // Do something 
    alert('Hello'); 
}; 

if(window.onload) { 
    // If a function is already bound to the onload event, execute that too. 
    var fn = window.onload; 
    window.onload = function() { 
     fn(); 
     onload(); 
    }; 
} else { 
    window.onload = onload; 
} 

또는 사용하는 라이브러리를하는이 있습니다 -

window.addEventListener("load", function(){ /*code*/ }, false); 

2는이 같은 해킹을 사용하여 너는 :

$(document).ready(function() { 
    alert('Hello'); 
} 
+0

Thanks @fsmmu ... 인라인 JavaScript를 jQuery 함수로 다시 작성하면 페이지가로드 될 때 둘 다 실행됩니다! 매우 감사합니다! – slickboy

0

이것은 적절한 수정보다 많은 문제 일 수 있지만 페이지가로드 된 후 자동으로 호출되도록 인라인 JS를 HTML 페이지의 맨 아래에 넣을 수 있습니다. - 사용하여 addEventListener

1 : 그것은 당신이 실제로 window.onload()

+0

"load"이벤트는 페이지의 모든 리소스가로드 된 후 실행됩니다 (이미지 등). 맨 아래에있는 스크립트가 그 전에 실행될 수 있습니다. 보장은 없습니다. –

0

두 가지 방법을 사용할 필요가 없습니다 의미합니다.

var func = window.onload; 
window.onload = function() { 
    if (func) func(); 
    /* code */ 
}; 
+0

'addEventListener()'는 IE8에서 구현되지 않았습니다 - 이것은 무시할 수 없습니다. –

관련 문제