HTML5Boilerplate / include библиотеки - запасной вариант?

Я в настоящее время задаюсь вопросом некоторые вещи о HTML5BP...

Я хочу включить JQuery Mobile и JQuery UI, и я не уверен, что это правильный путь:

<body>
    <!-- scripts and fallback to local -->
    <script src="//code.jquery.com/jquery.min.js"></script>
    <script src="//code.jquery.com/mobile/latest/jquery.mobile.js"></script>
    <script src="//code.jquery.com/ui/1.8.16/jquery-ui.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>
    <script>window.jQuery || document.write('<script src="js/libs/jquery-ui.min.js"><\/script>')</script>
    <script>window.jQuery || document.write('<script src="js/libs/jquery.mobile.min.js"><\/script>')</script>
    <!-- end scripts and fallback to local -->

    <!-- scripts concatenated and minified via ant build script-->
    <script src="js/plugins.js"></script>
    <script src="js/script.js"></script>
    <!-- end scripts concatenated and minified via ant build script-->

Причина, по которой я не уверен, заключается в том, что когда я за прокси-сервером и не имею доступа к Интернету, я ожидаю, что локальный резерв будет работать, но это не так. Я получаю ошибку аутентификации и страница не загружается.

Это способ как правильно его включить?

В голове я предпочитаю:

   <link rel="dns-prefetch" href="//code.jquery.com" />

Спасибо!

2 ответа

Не уверен, если вы все еще ищете помощь здесь, но здесь идет. Ваша dns-prefetch верна, и загрузка скрипта в основном корректна с двумя проблемами:

  1. Вы только проверяете, загружен ли jQuery для ваших запасных вариантов. Это означает, что если jQuery загружается правильно, но по какой-то причине jQuery UI или Mobile не будут работать, ваши запасные варианты не будут работать. Не совсем вероятно, так как ваша загрузка из того же места, но все же...
  2. Ваш заказ, по-моему, неверен. Я думаю, что вы должны проверить сразу после каждого - просто менее запутанным. Также усложняется порядок загрузки - мобильное обнаружение ниже, скорее всего, будет ошибкой, если jQuery не будет загружен первым...

Я изменил ваш код ниже. Обратите внимание, что мобильное обнаружение - это мое собственное изобретение (за последние 5 минут). Это работает, но я не могу гарантировать потрясающую крутость!

<body>
    <!-- scripts and fallback to local -->
    <script src="//code.jquery.com/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>
    <script src="//code.jquery.com/ui/1.8.16/jquery-ui.min.js"></script>
    <script>window.jQuery.ui || document.write('<script src="js/libs/jquery-ui.min.js"><\/script>')</script>
    <script src="//code.jquery.com/mobile/latest/jquery.mobile.js"></script>
    <script>window.$.mobile || document.write('<script src="js/libs/jquery.mobile.min.js"><\/script>')</script>
    <!-- end scripts and fallback to local -->

    <!-- scripts concatenated and minified via ant build script-->
    <script src="js/plugins.js"></script>
    <script src="js/script.js"></script>
    <!-- end scripts concatenated and minified via ant build script-->

+1 lnrbob

Я также обычно делаю условия для версий jQuery, чтобы облегчить просмотр страниц для обычных браузеров и отправить старый jQuery в duds.

<!--[if (gte IE 9) | !(IE)]><!-->
  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  <script>if (!!window.jQuery && jQuery().jquery !== '2.0.3') document.write('<script src="<?= ASSETS ?>js/jquery.2.0.3.min.js" type="text/javascript"><\/script>')</script>
<!--<![endif]-->
<!--[if lte IE 8]>
  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <script>if (!!window.jQuery && jQuery().jquery !== '1.10.2') document.write('<script src="<?= ASSETS ?>js/jquery.1.10.2.min.js" type="text/javascript"><\/script>')</script>
<![endif]-->
Другие вопросы по тегам