2013-03-15 2 views
0

jquery 및 jquery UI가 필요하며 강력하고 유연한 버전을 얻는 데 문제가있는 북마크릿을 만들었습니다 (SO와 다양한 트롤을 받았습니다. 블로그)하지만 하나의 파일 만로드 (예 : jQuery)되어 있는지 확인하거나 jQuery 및 기타 파일을 먼저로드하는지 확인하지 않고 순서대로로드합니다.북마클릿 -로드되지 않은 경우 jquery 및 jquery UI를로드하고 최소 버전을 올바른 순서로 확인

정말 하나 같은 : 필요한 경우 jQuery를 만 부하의 최소 버전을 설정

(function(){ 

    // the minimum version of jQuery we want 
    var v = "1.8.2"; 

    // check prior inclusion and version 
    if (window.jQuery === undefined || window.jQuery.fn.jquery < v) { 
     var done = false; 
     var script = document.createElement("script"); 
     script.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js"; 
     script.onload = script.onreadystatechange = function(){ 
      if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) { 
       done = true; 
       initMyBookmarklet(); 
      } 
     }; 
     document.getElementsByTagName("head")[0].appendChild(script); 
    } else { 
     initMyBookmarklet(); 
    } 

    function initMyBookmarklet() { 
     (window.myBookmarklet = function() { 
      $('body').append('hello world'); 
     })(); 
    } 

})(); 

. 하지만 어떻게 이것을 jQuery UI로 마무리 할 수 ​​있을까요? 예 : 최소 버전을 설정하고 필요할 경우에만로드하고 올바른 순서로로드하는지 확인하십시오. 모든 포인터는 크게 감상 할 수

,

+0

귀하가 제공 한 코드는 어떻게 무엇을하는 방법을 보여줍니다 네가 원해. 이 예제는 스크립트 파일을 추가하고 onload 이벤트는 함수를 실행합니다. 따라서 코드를 더 깊게 중첩 할 수 있습니다. jquery를로드 한 후 onload 함수는 jqueryui를 추가하고 * for * 스크립트에 대한 onload 이벤트가 최종 fuction을 실행합니다. 또는 세 번째 스크립트 또는 CSS 파일 등을 추가하려는 경우 체인에 추가 링크를 추가하기 만하면됩니다. –

답변

0

그냥로드 JQuery와 후 JQuery와 UI를 다시 확인 ... 올바른 궤도에

(function(){ 
    var addScript = function (path, callback) { 
     var done = false; 
     var script = document.createElement("script"); 
     script.src = path; 
     script.onload = script.onreadystatechange = function(){ 
      if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) { 
       done = true; 
       if (callback) { 
        callback(); 
       } 
      } 
     }; 
     document.getElementsByTagName("head")[0].appendChild(script); 
    }; 

    var initMyBookmarklet = function() { 
     (window.myBookmarklet = function() { 
      $('body').append('hello world'); 
     })(); 
    } 

    var checkForJQueryUI = function() { 
     if (condition for jquery ui) { 
      addScript("http://jquery-ui-path-goes-here/file.js", initMyBookmarklet); 
     } else { 
      initMyBookmarklet(); 
     } 
    }; 

    var checkForJQuery = function() { 
     // the minimum version of jQuery we want 
     var v = "1.8.2"; 
     // check prior inclusion and version 
     if (window.jQuery === undefined || window.jQuery.fn.jquery < v) { 
      addScript("http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js", checkForJQueryUI); 
     } else { 
      checkForJQueryUI(); 
     } 
    }; 

    checkForJQuery(); 
})();