2011-02-16 11 views
14

para HTML 5 utiliza el siguiente truco para el repliegue a almacena localmente jQuery si el acaparamiento de Google CDN falla:de reserva para 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> 

¿Cómo poner en práctica este truco para llevar a cabo el mismo truco para jQuery ¿UI?

Respuesta

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

Haga esto después del repliegue de jQuery.

O (Si no te gusta la)

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

Detecting an undefined object property

+0

así que esto debería funcionar de la misma manera para cualquier plugin. ¡Buena cosa! –

+0

Debería. Si no te gusta el! también puedes probar si window.jQuery.ui no está definido. – Snake

+20

O podría usar 'window.jQuery.ui || document.write' ... –

6

lo hago de esta manera:

<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

Utilizando el marco de optimización Web ASP.NET

Forma más fácil de hacerlo cuando estás usando paquetes.

Obtenga el paquete Microsoft.AspNet.Web.Optimization de NuGet. En su BundleConfig se puede configurar sus paquetes para incluir no sólo el CdnPath, sino también 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); 
    //... 
} 
Cuestiones relacionadas