Обратная связь для jQuery UI из Google CDN
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 UI?
Ответы
Ответ 1
<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>
Обнаружение свойства объекта undefined
Ответ 2
Я делаю это так:
<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>
Ответ 3
Использование платформы веб-оптимизации ASP.NET
Простой способ сделать это, когда вы используете пакеты.
Получите пакет 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);
//...
}