2011-04-07 6 views
10

myjs.js 파일에 jquery.js를 포함하고 싶습니다. 나는 이것을 위해 아래 코드를 작성했다.jquery.js를 다른 js 파일에 포함시키는 방법은 무엇입니까?

var theNewScript=document.createElement("script"); 
    theNewScript.type="text/javascript"; 
    theNewScript.src="http://example.com/jquery.js"; 
    document.getElementsByTagName("head")[0].appendChild(theNewScript); 
    $.get(myfile.php); 

다섯 번째 줄에 '$ not defined'오류가 표시됩니다. jquery.js를 포함하고 myjs.js 파일에 $ .get() 함수를 호출하려고합니다. 어떻게해야합니까? 제발 도와주세요

+0

왜 페이지 외부에 $ .get()을 사용하려고합니까? – Calum

+0

당신이'$ .get (myfile.php); 대신'$ .get ("myfile.php");를 사용한다고 가정합니다. –

+0

[jquery가로드되었는지 확인한 다음 false 인 경우로드하십시오] (http://stackoverflow.com/questions/1828237/check-if-jquery-has-been-loaded-then-load-it-if) -false) –

답변

10

프로그래밍 반드시 스크립트를 사용할 수 있음을 의미하지 않는다 즉시. 브라우저가 해당 파일을 다운로드하여 파싱하고 실행하기를 기다려야합니다. 일부 브라우저는 논리를 연결할 수있는 스크립트에 대해 onload 이벤트를 발생시킵니다. 그러나 이것은 크로스 브라우저 솔루션이 아닙니다. 다음과 같이 특정 기호가 사용 가능하게되도록 "폴링"하고 싶습니다.

var theNewScript = document.createElement("script"); 
theNewScript.type = "text/javascript"; 
theNewScript.src = "http://example.com/jquery.js"; 
document.getElementsByTagName("head")[0].appendChild(theNewScript); 
// jQuery MAY OR MAY NOT be loaded at this stage 
var waitForLoad = function() { 
    if (typeof jQuery != "undefined") { 
     $.get("myfile.php"); 
    } else { 
     window.setTimeout(waitForLoad, 1000); 
    } 
}; 
window.setTimeout(waitForLoad, 1000); 
+0

어떤 브라우저가 onload 이벤트를 지원하지 않습니까? 그것은 IE 7과 같은 구형 브라우저에서도 나를 위해 잘 작동합니다. – Christophe

+1

나는 (oncertified) gecko, opera 등에서 스크립트 태그에 대한 onload 이벤트를 읽었지만 IE에서는 onreadystatechange를 사용해야합니다. http://unixpapa.com/js/dyna.html 및 http://blog.lexspoon.org/2009/12/detecting-download-failures-with-script.html –

+0

을 참조하십시오. 처리기는 브라우저에 따라 다릅니다. 나는 현대적인 브라우저를위한 addEventListener를 사용하고 이전 IE를위한 attachEvent는 잘 동작한다. – Christophe

4

문제는 스크립트가 즉시로드되지 않으며 스크립트 파일이 페이지에 다운로드되어 실행될 시간이 걸리는 것입니다 ($를 정의하는 jQuery의 경우).

HeadJS을 사용하는 것이 좋습니다. 당신은 할 수 있습니다 :

head.js("/path/to/jQuery.js", function() { 
    $.get('myfile.php'); 
}); 
+1

this입니다. 해결되었습니다. 모든. 나의. 문제. 감사. – andufo

0

간단한 대답을, 청춘을. jQuery 파일 은 침입자에게 매우 민감하므로 시도해보십시오. 다른 파일을 jQuery 파일에 결합하면 종종 JS 콘솔에 오류가 발생하고 파일은 메인 파일에로드 될 때까지 PLUS jQuery가 초기화되지 않습니다.

죄송합니다. didnt는 당신이하고 있었던 것을 아주 잘 안다. 내가 전에이 코드를 사용

var s = document.createElement('script'); 
s.type = 'text/javascript'; 
s.async = true; 
s.src = 'http://domain.com/jquery.js'; 
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s); 
0

, 그것은 일 :

이 시도 문서 헤드 내부에 스크립트 태그를 덧붙이

var t=document; 
var o=t.createElement('script'); 
o=t.standardCreateElement('script'); 
o.setAttribute('type','text/javascript'); 
o.setAttribute('src','http://www.example.com/js/jquery-1.3.2.js'); 
t.lastChild.firstChild.appendChild(o); 
관련 문제