2014-05-10 4 views
1

필요한 경우에만 가져 오기 기능을 사용하여 자바 스크립트 파일을 가져옵니다. 내 함수는 다음과 같습니다. 그것들은 main.js 파일과 jquery 레디 래퍼 안에 있습니다.필요한 경우 자바 스크립트 파일 가져 오기 및 전역 변수

$(function() { 
    function globaltrigger(){ 
     alert(''); 
    } 

    function $import(src){ 
     var scriptElem = document.createElement('script'); 
     scriptElem.setAttribute('src',src); 
     scriptElem.setAttribute('type','text/javascript'); 
     document.getElementsByTagName('head')[0].appendChild(scriptElem); 
    } 
}); 

의 우리가 마우스 클릭에 자바 스크립트 파일을 가져 가정 해 봅시다. $import('newfile.js');. 그러나 새로 가져온 파일은 main.js 자바 스크립트 파일의 기능에 액세스 할 수 없습니다. 예 :

// the following function is placed in the newfile.js file 
$(function() { 
    globaltrigger(); 
}); 

이 방법을 만드는 방법은 무엇입니까?

+1

그래야합니다. 'globaltrigger()'는 실제로 전역 범위에 있습니까? 아니면 window.onload 또는 DOM 준비에 래핑되어 있습니까? 어떤 오류 메시지가 나타 납니까? – MrCode

+0

스크립트가 완전히로드 된 후 함수를 호출하고 있습니까? 당신이 로딩을 클릭하면 비동기이므로 파일이 완전히로드되지 않았으며 함수를 호출하는 중일 수 있습니다. –

+0

@MrCode'ReferenceError : globaltrigger is not defined. ' 아, 그것은'window.onload'에 싸여있는 것 같습니다. $ import는 onload에서 작동합니까? – pewpewlasers

답변

1

내가 의심하는 바대로 globaltrigger() 기능이 전역 범위에 없습니다. jQuery DOM 준비 함수 내부에 있으므로 외부에서 액세스 할 수 없습니다.

는 전역으로 이동

:

function globaltrigger(){ 
    alert(''); 
} 

$(function(){ 
    // dom ready stuff 
}); 

그것은 변수와 함수의 많은 글로벌 공간을 오염 피하기 위해 좋은 연습입니다. 네임 스페이스를 구현하는 간단한 방법 인 객체 아래에 함수/변수를 저장할 수 있습니다.

var SomeApp = {}; 

SomeApp.globaltrigger = function(){ 
    alert(''); 
}; 

외부 자바 스크립트에서 당신이 그것을 호출 할 수 있습니다

SomeApp.globaltrigger(); 

모든 코드가 SomeApp 개체 아래 살고 있기 때문 좋다.

+0

예, 귀하의 로직이 매우 합리적으로 들립니다. 그러나'globaltrigger()'를 움직이지 않고 DOM 내부에 접근 할 수있는 방법이 있습니까? – pewpewlasers

+0

아니지만 지구 공간을 오염시키는 것에 대해 걱정이된다면 편집을 참조하십시오. – MrCode

+0

좋아 보인다! 하나의 질문이지만 성능 현명함은 다른 포스터 (Amit Joki)가 제안한 것과 같이 다른 개체를 사용하거나 창 개체 아래에 함수를 저장하는 것이 좋습니다. – pewpewlasers

1

DOM 준비는 클로저를 생성하여 함수를 해당 범위로만 제한합니다. 이 같은 글로벌로 함수를 선언 할 수

window.globaltrigger = function(){ 
    alert(''); 
} 

지금 함수가 진정한 글로벌이고 다른 스크립트 호출 할 수 있습니다.

+0

좋습니다. 감사! – pewpewlasers

+0

@pewpewlasers, 도와 줘서 기쁩니다;) –

관련 문제