2011-04-22 79 views
3

我使用的代碼直接從實例上yepnope主頁:yepnope.js資源後備

yepnope([{ 
    load: 'http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js', 
    complete: function() { 
     console.log('made it'); 
     if(!window.jQuery) { yepnope('/js/jquery.1.5.2-min.js'); } 
    } 
    }]); 

我一直沒有互聯網工作今天,我發現我的jQuery的本地版本沒有被調入。

由於我沒有連接到互聯網,我會假設在上面的例子中Google CDN版本將無法加載,complete函數將被調用,這將加載我的本地副本。它看起來像complete沒有被調用,因爲我沒有在控制檯中看到「成功」。

此外,我檢查了我的本地副本的路徑是正確的。

+0

也許他們改變了它自t他的問題,但目前在主頁上的示例使用回調事件,而不是完整的事件。 – Tuan 2011-10-01 05:57:48

回答

5

編輯根據您的意見和問題更新:

你必須等待它超時。完整的功能不會立即觸發。我剛剛下載yepnope.js就跑添加以下代碼他們的演示/ index.html的只是在他們yepnope調用,在頁面底部加載的jQuery:

yepnope({ 

    load  : "http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js", 
    callback : function() { console.log("callback"); }, 
    complete : function() { console.log("complete"); } 

}); 

顯然的jQuery 1.6.2將不會加載。在控制檯大約10-15秒鐘後,「回調」和「完整」信息都顯示出來,所以我知道他們被解僱了。

Alernative:

如果你發現你只需要這個功能,在線開發/離線,您可以嘗試什麼Html5Boilerplate用途,這是我adpoted:

<!-- Grab Google CDN's jQuery, with a protocol relative URL; 
    fall back to local if necessary --> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" 
     type="text/javascript"></script> 

<script type="text/javascript"> 
    window.jQuery || document.write('<script src="js/jquery-1.5.2.js">\x3C/script>') 
</script> 

這裏是我親自使用:

</form> 

    <!-- Javascript at the bottom for fast page loading --> 

    <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary --> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> window.jQuery || document.write('<script src="js/jquery-1.5.2.js">\x3C/script>')</script> 

    <!-- Grab Google CDN's jQuery UI, with a protocol relative URL; fall back to local if necessary --> 
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> $.ui || document.write('<script src="js/jquery-ui-1.8.4.custom.min.js">\x3C/script>')</script> 

    <!-- Scripts concatenated and minified via ant build script--> 
    <script src="js/plugins.js" type="text/javascript"></script> 
    <script src="js/script.js" type="text/javascript"></script> 
    <!-- End scripts --> 

</body> 
</html> 
+0

我其實在我的代碼中有這個,對不起,我只是沒有正確地複製它。我會更新我的問題。 – imns 2011-04-22 16:34:09

+0

我想我可以加載腳本標籤HTML5樣板文件的jQuery,然後使用yepnope爲我的腳本的其餘部分。我想知道這是否會起作用,因爲我的所有腳本都依賴於jQuery。 – imns 2011-04-22 19:24:41

+0

我會更新我的答案並向您展示我在項目中所做的工作,這是Paul Irish在Html5Boilerplate中顯示的最佳做法。我甚至不使用yepnope.js來加載腳本。如果您在腦海中使用Modernizr,您應該永遠不需要加載3或4個頂端,其中包括針對IE的yepnope和html5墊片。 – 2011-04-22 19:27:50