2010-05-21 4 views
1

저는 Javascript/Jquery 프로그래밍 초보자입니다.이 간단한/바보 같은 질문이 있으면 사과드립니다.jQuery getScript 함수 (프레임 포함)

jQuery .getScript() 함수를 사용하여 기존 웹 페이지의 일부를 새로 고치려고합니다. 이 웹 페이지는 로컬 파일 시스템에서 실행해야하며 많은 양의 서식이 프레임을 사용하여 수행됩니다.

바로 지금, 선택할 수있는 "범위"를 표시하는 사이드 바, 웹 페이지의 대부분의 내용을 표시하는 메인 프레임 및 바닥 글 프레임의 세 가지 기본 프레임이 있습니다. 페이지의 주요 항목은 index.html 파일에 있으며, sidebar.html, main.html 및 footer.html 파일을 각 프레임에로드합니다.

차례로 main.html에는로드되는 여러 개의 javascript 파일이 있습니다. main.js에는이 기본 창의 내용을 형식화/처리하는 수많은 기능이 들어 있습니다. 이 자바 스크립트 파일을로드 한 후 main.html은 메인 프레임에 표시 될 데이터가 포함 된 몇 가지 자바 스크립트 파일을로드합니다. 로드 된 이러한 파일은 고정 데이터 구조를 가지며 main.js 파일에 의해로드 된 함수에 종속됩니다.

웹 페이지로드가 잘되었지만 사용자가 다른 "범위"로 전환하려고하면 전체 웹 페이지가 다시로드되어 전환됩니다. 웹 페이지의 유일한 차이점은 다른 .js 파일 집합으로로드 된 main.js 프레임의 내용입니다.

충분한 텍스트를 살펴 보겠습니다.

웹 페이지가로드 될 때 전환 스코프를 처리하는 index.html 수준의 .js 파일에서 getScript 함수에 대한 간단한 호출을 추가하려고했습니다. 이 파일 newFile은 main.html 파일에로드 된 이전에로드 된 oldFile.js와 다른 데이터 정의를가집니다.

$ .getScript (/js/newFile.js);

그러나 newFile.js는 main.js에있는 parseData() 함수에 의존하기 때문에 작동하지 않습니다.

firebug를 열면 parseData가 dom 탭에 있지 않습니다. 다른 프레임에있는 main.html 및 main.js 파일의 범위 지정 문제와 관련 있다고 생각됩니다.

정확한 "프레임"을 대상으로 일부 타겟팅을 시도했지만 무슨 일이 일어나고 있는지 충분히 이해할 수 없다고 생각합니다.

$ (window.parent.frames [0]). getScript (/js/newFile.js);

제안 사항?

내가 불을 지르고 콘솔에 입력한다면 "parseData는"그것을 찾을 수 없습니다 : 나는 window.parent.frames 입력하면 [1] .parseData,

그러나 "ReferenceError가 parseData가 정의되지 않은" 함수를 찾을 수 있습니다.

자바 스크립트의 모든 잔인하고 가난한 이해에 대해 죄송합니다. 바라건대 누군가가 도움을 줄 수 있기를 바랍니다!

감사

+0

이 나를 로컬 파일 시스템의 해제 파일을로드하는 문제 었죠. 브라우저의 동일한 도메인 시작 정책으로 인해 필자는 필요한 파일에 액세스 할 수 없었습니다. – user210099

답변

0

.getScript() 글로벌 맥락에서로드 된 스크립트를 실행합니다. 내 parseData() 함수는 전역 범위에서 사용할 수 없으므로 가정합니다.당신은 너무 같은 jQuery.globalEval() 호출을 래핑하여 전 세계적으로 parseData을 정의하는 시도 할 수 :

$.globalEval(" 
    function parseData(){ 
     alert('It works!'); 
    } 
"); 

내가 테스트하지 않았습니다하지만 그것은 또한 전 세계적으로 실행하기 때문에 자바 스크립트 setTimeout() 기능을 사용하여 비슷한 상황으로 실행했다.

관련 문제