Откат для jQuery UI из Google CDN - PullRequest
14 голосов
/ 16 февраля 2011

Html5 Boilerplate использует следующий трюк для возврата к локально сохраненному JQuery, если не удается получить его из Google CDN:

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

Как бы вы реализовали этот трюк, чтобы выполнить тот же трюк для пользовательского интерфейса jQuery?

Ответы [ 3 ]

28 голосов
/ 16 февраля 2011
<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>

Обнаружение неопределенного свойства объекта

6 голосов
/ 18 сентября 2013

Я делаю это так:

<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 голосов
/ 02 апреля 2015

Использование ASP.NET Web Optimization Framework

Более простой способ сделать это при использовании пакетов.

Получить пакет Microsoft.AspNet.Web.Optimization от NuGet.Теперь в вашем 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);
    //...
}
...