2010-06-16 5 views
0

저는 jQuery $ .getScript로 자바 스크립트를 실행합니다. 실행 된 스크립트에서 내 소스 파일의 함수 및 변수에 액세스하지 못했습니다.

해결책이 있습니까?

답변

1

$ .getScript()가 실행하는 스크립트 이 전역 컨텍스트에 액세스 할 수 있습니다. 외부 스크립트에서 모든 전역 변수 (또는 그 기능에 대한 함수)를 사용할 수 있습니다.

1

닉 크레이 버 (Nick Craver), 나는 단지 내 일이 왜 작동하지 않는지에 집착하며 시간을 보내고, 내가 작동하게하는 데 필요한 통찰력을 나에게주었습니다.

XOXOXOXOXOXOXOXO

흥미로운 참고 사항 :

는이 같은 JQuery와 var과 같은 변수를 선언 할 수

$variableName = something; 

그 방법 JQuery와는 아무 곳이나 범위의 IT에 액세스 할 수 있습니다.

$(function(){ 
    $alertString = 'Hello World'; 

    $.getScript('test.js', function(){ 
     // do nothing 
    });  
} 

test.js: 

alert($alertString); 
+0

매우 유용하고 재미 있습니다. –

+0

'$'로 시작하는 변수는 특별한 것이 없으므로 다른 문자와 마찬가지로 작동합니다. 참고로 다음 질문을 참조하십시오. http://stackoverflow.com/questions/205853/why-would-a-javascript-variable-start-with-a-dollar-sign –

1

나는 주제의 나의 이해 여기 도움이 답을 찾았지만, 난 아직도 this article on TechMonks 우연히 때까지 내 자신의 환경에서 작동 만들 수 없습니다 : 나는 복사 할 때/최종 붙여

예를 들어 내 주요 .js 파일의 머리 부분을 모두 방금 작업했습니다. 나에게 적어도 $ .getScript() 함수는 깨져서 수정되었습니다.

jQuery.extend({ 
getScript: function (url, callback) { 
    var head = document.getElementsByTagName("head")[0] || document.documentElement; 
    var script = document.createElement("script"); 
    script.src = url; 

    // Handle Script loading 
    { 
     var done = false; 

     // Attach handlers for all browsers 
     script.onload = script.onreadystatechange = function() { 
      if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) { 
       done = true; 
       //success(); 
       //complete(); 
       if (callback) callback(); 

       // Handle memory leak in IE 
       script.onload = script.onreadystatechange = null; 
       if (head && script.parentNode) { 
        head.removeChild(script); 
       } 
      } 
     }; 
    } 

    head.insertBefore(script, head.firstChild); 
    return undefined; 
} 
});