2009-11-05 7 views
0

head 태그에 javascript 파일을 포함하는 aspx 페이지가 있습니다. 이 페이지에는 사용자 정의 컨트롤이 있습니다. 사용자 정의 컨트롤은 aspx 페이지에로드 된 javascript 파일에 정의 된 객체를 참조하는 인라인 javascript 함수가있는 링크가 있습니다. 응용 프로그램은 마스터 페이지와 여러 개의 다른 aspx 페이지로 구성됩니다. 문제의 페이지 (자바 스크립트 파일 포함)는 다른 페이지보다 먼저로드되고 자바 스크립트 파일과의 링크가 렌더링됩니다. 그러나 링크를 클릭하면 "Microsoft JScript 런타임 오류 : 'Foo'가 정의되지 않았습니다. '라는 오류 메시지가 나타납니다. 여기서 foo는 javascript 파일에 정의 된 객체입니다. 그러나 페이지의 모든 부분이로드 될 때까지 기다리면 링크가 정상적으로 작동합니다. 여기서 무슨 일이 일어나고있는거야? 이 오류가 발생하지 않게하려면 어떻게합니까?페이지 일부가로드되는 동안 호출 된 javascript 함수가 정의되지 않았습니다.

감사합니다.

+0

모든 준비가 완료되면 DOM 변경 작업을 수행하기 위해 onload 또는 $ .ready 함수를 사용하고 있습니까? –

답변

1

if I wait until all the parts of the page are loaded, the link works fine

제 말은 브라우저가 인라인 함수를 사용하여 링크를 클릭 할 때까지 js 파일을 검색하고 실행하지 못했다고합니다.

window.onload = function() { 
    var link = document.getElementById('myLink'); 
    link.onclick = function() { 
    // on click logic 
    } 
} 

이 그냥 예입니다

하나 개의 잠재적 인 솔루션은 페이지가 사용자의 클릭 핸들러를 연결하는로드 될 때까지 기다리는 것입니다. 이것은 모든 종속성을 한 번에로드 할 수 있도록 js 파일 내부에 배치됩니다.

질문에 일반화 된 것처럼 좀 더 구체적인 것은 약간 어렵습니다.

관련 문제