외부 JS 파일 (예 : test.js)에 다음 코드가 있습니다. JQuery 소스가 아직 없다는 것을 발견하면 JQuery 소스를 가리키는 추가 스크립트 태그를 작성한다. 코드는 실제로 스크립트 태그를 생성하고 생성하는 실제 스크립트 앞에 삽입합니다.동적으로 생성 된 JQuery 스크립트 태그로 스크립트가 실행되지 않습니다.
if (typeof(jQuery) == "undefined") {
var head = document.getElementsByTagName("head")[0];
// get any and all script tags
var scripts = document.getElementsByTagName("script");
// the actual script call the actions (ie: this one "test.js")
thisScript = scripts[scripts.length - 1];
// create element
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
head.insertBefore(script,thisScript);
}
위의 코드는 정상적으로 작동합니다. 그러나, 내가 가지고있는 문제는 일단 JQuery 소스 스크립트 태그가 생성되면 "test.js"의 나머지 코드가 작동하지 않는다는 것입니다. 마치 코드가 JQuery 함수에 액세스 할 수없는 것처럼 (또는 JQuery가 있다는 것을 모르는 것처럼). 따라서
, "test.js"에 다음과 같은 코드가 작동하지 않습니다
$(document).ready(function() {
// ...
});
나는 FF (12) 방화 광에 따라지고있어 오류 것은 : 어떤 아이디어 "$가 정의되어 있지 않습니다" 왜 이런 일이 일어나거나 어떻게 해결할 수 있습니까?
참고 : 대상 페이지에 JQuery를 배치 할 수 있다는 것을 알고 있습니다. 그러나 그것은 옵션이 아닙니다. JQuery가 있는지 검색 할 수 있어야합니다. 그렇지 않다면 JQuery를 가리키는 스크립트 태그를 생성하고 Jquery 코드를 실행하십시오.
굉장! 초기화 코드? 내 머리를 치다. 왜 그것이 나에게 일어나지 않았는지 모르겠다. 좋은 대답. 감사! –
if-then 컨트롤, onload 이벤트, settimeout 및 몇 가지 다른 방법을 사용하여 초기화 코드를 시도했지만 운이 없다. 여전히 '$ 정의되지 않음'을 얻습니다. 아아, 내 제한된 코딩 경험은 지금까지 나를 데려 갈 수 있습니다. 나는 약간의 지침에 정말로 감사 할 것입니다. require.js 일도 파악하지 못합니다. 도움에 다시 한번 감사드립니다. –
확인. hunlock dot com의 기사를 읽고 알아 냈습니다. '$ document.ready (...') 함수를 래핑하고 변수 'script'의 onload 이벤트를 사용하여 호출했습니다. 도움을 다시 한번 감사드립니다. –