условная загрузка проблем jquery и jquery UI - PullRequest
2 голосов
/ 09 июля 2011

Отлично работает следующее:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="/scripts/jquery-1.6.2.min.js"%3E%3C/script%3E'))</script>

Однако сделать то же самое для пользовательского интерфейса Jquery (но с изменением на window.ui - это должно быть правильно, но я не уверен на 100%) не работает - на самом деле он загружает локальную версию каждый раз, а не только когда CDN файл недоступен (за Firebug):

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script>
<script>!window.ui && document.write(unescape('%3Cscript src="/scripts/jquery-ui-1.8.14.min.js"%3E%3C/script%3E'))</script>

Он загружает локальную версию, когда сеть недоступна, но также и при загрузке версии CDN (что означает ненужную двойную загрузку).

Ответы [ 2 ]

4 голосов
/ 09 июля 2011

Ваша проверка нагрузки просто нуждается в небольшой настройке.Пользовательский интерфейс jQuery создает объект ui под объектом jQuery (или $) , а не под window.Так что window.ui должно быть window.jQuery.ui, вот так:

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script>
<script>!window.jQuery.ui && document.write(unescape('%3Cscript src="/scripts/jquery-ui-1.8.14.min.js"%3E%3C/script%3E'))</script>
2 голосов
/ 02 февраля 2013

Это может быть глупо, но я предпочитаю логику ИЛИ И для этого:

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