2011-02-16 95 views
14

Html5的樣板的jQuery UI使用備用下面的技巧,以本地存儲的JQuery的,如果從谷歌CDN抓住它失敗:後備從谷歌CDN

<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script> 

你將如何實現這一招進行的jQuery同樣的伎倆UI?

回答

28
<script type="text/javascript">!window.jQuery.ui && document.write(unescape('%3Cscript src="path to jquery UI lib'))</script> 

在jQuery本身的回退後執行此操作。

或(!如果你不喜歡的)

<script type="text/javascript">(window.jQuery.ui === /* notice the === */ undefined) && document.write(/* ... */)</script> 

Detecting an undefined object property

+0

所以這應該適用於任何插件一樣。好東西! – 2011-02-16 11:13:51

6

我不喜歡這樣寫道:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="/static/js/jquery.min.js"><\/script>')</script> 


<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<script>window.jQuery.ui || document.write('<script src="/static/js/jquery-ui.min.js"><\/script>')</script> 
0

使用ASP.NET Web優化框架

更簡單的方法來做到這一點,當你使用捆綁。

從NuGet獲取Microsoft.AspNet.Web.Optimization包。 現在您的BundleConfig你可以設置你的捆綁不僅包括CdnPath,也CdnFallbackExpression:

public static void RegisterBundles(BundleCollection bundles) 
{ 
    bundles.UseCdn = true; 
    BundleTable.EnableOptimizations = true;  
    var jquery = new ScriptBundle("~/bundles/jquery", "//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js").Include(
      "~/Scripts/jquery-{version}.js"); 
    jquery.CdnFallbackExpression = "window.jQuery"; 
    bundles.Add(jquery); 
    //... 
}