2012-05-30 2 views
0

내가 아는이 tutorial 덕분에, 어떻게 동적으로 jQuery를로드 할 호스트의 웹 사이트가없는 경우 (예 : <script src="/widget/widget.js?type=normal" type="text/javascript"></script> 전화로) :jquery 라이브러리가 없으면 동적으로로드하는 방법은 무엇입니까?

(function() { 
    var jQuery; 

    if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.4.2') { 
     var script_tag = document.createElement('script'); 
     script_tag.setAttribute("type", "text/javascript"); 
     script_tag.setAttribute("src", pathWidget + "/scripts/jquery-1.7.min.js"); 

     if (script_tag.readyState) { 
      script_tag.onreadystatechange = function() { // For old versions of IE 
       if (this.readyState == 'complete' || this.readyState == 'loaded') { 
        scriptLoadHandler(); 
       } 
      }; 
     } else { 
      script_tag.onload = scriptLoadHandler; 
     } 
     (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag); 
    } else { 
     jQuery = window.jQuery; 
     main(); 
    } 

    function scriptLoadHandler() { 
     jQuery = window.jQuery.noConflict(true); 
     main(); 
    } 

    function main() { 
     jQuery(document).ready(function ($) { 

     }); 
    } 
})(); 

글쎄, 지금은 같은 일을하고 싶습니다 jquery 라이브러리의 경우. jQuery Cycle에 대해 이야기 해 보겠습니다.

나는 함께 시도했다 :

script_tag.setAttribute("src", pathWidget + "/scripts/jquery-1.7.min.js"); 

하지만 문서에 준비주기를로드 할 때, 나는이 오류를 얻을 :

var script_cycle = document.createElement('script'); 
script_cycle.setAttribute("type", "text/javascript"); 
script_cycle.setAttribute("src", pathWidget + "/scripts/jquery.cycle.all.js"); 

$("#myRotator").cycle is not a function 

내가 잘못?

답변

1

플러그인이로드되어 있는지 확인하려고 : 당신은 부하 외부 자바 스크립트 파일을 $.getScript()을 사용할 수 있습니다

if(!jQuery().cycle) { 
    var script_cycle = document.createElement('script'); 
    script_cycle.setAttribute("type", "text/javascript"); 
    script_cycle.setAttribute("src", pathWidget + "/scripts/jquery.cycle.all.js"); 
    (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_cycle); 
} 
+0

그리고'scriptLoadHandler()'에 넣어야합니다. 맞습니까? – markzzz

+0

예, 거기서 쇼를 진행해야합니다 :-) –

+0

몇 가지 문제가 있습니다 ... 나는 새로운 질문을 열 것입니다! – markzzz

0

.

if(!jQuery().cycle) { 
    $.getScript('/scripts/jquery-1.7.min.js', 
    function() {}); 
} 
+0

캐싱을 원합니다! 그것이 iframe을 사용하지 않는 이유입니다. – markzzz

관련 문제