2011-02-16 3 views
14

Html5 boilerplate utilise l'astuce suivante pour fallback à JQuery stockées localement si saisissant de Google CDN échoue:Repli pour jQuery UI de Google CDN

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

Comment voulez-vous mettre en œuvre cette astuce pour effectuer la même astuce pour jQuery UI?

Répondre

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

Effectuez cela après le repli pour jQuery lui-même.

Ou (! Si vous ne l'aimez pas)

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

Detecting an undefined object property

+0

Donc, cela devrait fonctionner de la même façon pour tout plug-in. Des trucs géniaux! –

+0

Il devrait. Si vous n'aimez pas le! vous pouvez également tester si window.jQuery.ui n'est pas défini. – Snake

+20

Ou vous pouvez utiliser 'window.jQuery.ui || document.write' ... –

6

je le fais comme ceci:

<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

Utilisation du framework ASP.NET Web Optimisation

Manière plus facile de le faire quand vous êtes en utilisant des faisceaux.

Obtenez le package Microsoft.AspNet.Web.Optimization de NuGet. Maintenant dans votre BundleConfig vous pouvez configurer vos faisceaux pour inclure non seulement le CdnPath, mais aussi un 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); 
    //... 
} 
Questions connexes