2013-03-15 49 views
0

我創建一個書籤,需要jQuery和jQuery UI,並且遇到麻煩得到一個強大/靈活的版本工作(已拖網SO和各種博客),但他們似乎只檢查一個文件被加載(例如jQuery)或只是加載jQuery和其他文件,而不檢查它們是否先加載。bookmarklet - 加載jQuery和jQuery的UI如果沒有加載,檢查最低版本,並在正確的順序

我真的很喜歡這一個:

(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和只加載最低版本。但是我怎樣才能用jQuery UI來包裝呢?例如設置最小版本並只在需要時加載它,並確保它們按正確的順序加載。

任何指針將不勝感激,

+0

您提供的代碼展示瞭如何做你要。該示例附加一個腳本文件,onload事件執行一個函數。所以你只需將代碼嵌入更深。加載jquery後,onload函數會追加jqueryui和onload事件,以便*腳本執行最終功能。或者,如果您想追加第三個腳本或CSS文件等,您只需在鏈中添加更多鏈接。 – 2013-03-15 14:13:28

回答

0

你是在正確的軌道上...只是再次檢查jQuery用戶界面加載的jQuery後

(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(); 
})();