Jump to content
  • 0

Скрипт, если не загрузился с сервера.


Zverushka
 Share

Question

У меня стоит загрузка жейквери с гугла.

Но вот недавно отрубился интернет и тут я увидела, что вот этот скрипт

// Загружена ли библиотекаwindow.jQuery || document.write('<script type="text/javascript" src="js/jquery-1.9.1.min.js"><\/script>');

Совсем-то и не работает :). Точнее, он подключает скрипт локально, но он делает это после других скриптов (перед концом боди), поэтому другие скрипты выдают ошибку - мол, а мы не знаем, что это за функции такие $ - итп.

Вопрос - как сделать, чтобы все заработало? :)

Edited by Zverushka
Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Изначально был расчет на то, что с гугла и грузится быстрее и обычно вообще скрипт не грузится, а берется из кэша браузера, плюс минус запрос со своего сервера, что тоже неплохо.

То есть данное дейтвие было сделано в целях оптимизации. Вопрос можно ли сохранить эту оптимизацию, каким-то образом написав более правильный скрипт? Данная "фича" была найдена на просторах инета, но как оказалось - не все так просто, скрипты в итоге не пашут, если с гугла не загружается.

Edited by Zverushka
Link to comment
Share on other sites

  • 0

Я не про то, я знаю что это такое. Я про то что оно вообще работает? Находит по тому пути, что вы задаете?

И если полностью, то у вас должно выглядеть так:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script><script>window.jQuery || document.write('<script src="/js/jquery-1.7.2.min.js"><\/script>')</script>
Edited by npofopr
Link to comment
Share on other sites

  • 0

так или иначе мне кажется такое не сделать, так как ты подключаешь сам модуль скрипта jquery

И пытаешься его сразу подключить путем javascript

Вот тут он и дает тебе ошибку...

Думаю это реализовать не как, хотя если найти функцию на подключений в jquery

 

вытащить эту функцию в отдельный файлик и все остальное прописать так как  есть, есть шансы что будет работать....

Link to comment
Share on other sites

  • 0

@npofopr, получается, что в основном хтмл файле идет  

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

А в файле script.js (подключен последним среди скриптов), в котором весь код написан - вначале идет строка

<script>window.jQuery || document.write('<script src="/js/jquery-1.7.2.min.js"><\/script>')</script>

Да, в папке со скриптами валяется библиотека jquery-1.7.2.min.js, которая должна подключится, если не получится подключить ее с гугла.

Link to comment
Share on other sites

  • 0
У меня стоит загрузка жейквери с гугла. Но вот недавно отрубился интернет и тут я увидела, что вот этот скрипт

Сайт делается для его дальнейшей публикации на хостинге или просто приложение для локального использования?

Если сайт будет выкладываться на хостинг, тогда, думаю, не стоит беспокоиться по поводу подгрузки библиотеки с гугла, ибо вероятность того, что хостинг ляжет по причине попадания в здание метиорита больше, чем ляжет гугл =). Да и даже если он(гугл) ляжет, то подгружаемая библиотека, скорее всего, у пользователя уже в кэше  есть.

 

 

 

А в файле script.js (подключен последним среди скриптов), в котором весь код написан - вначале идет строка

<script>window.jQuery || document.write('<script src="/js/jquery-1.7.2.min.js"><\/script>')</script>

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

Edited by CoDy
Link to comment
Share on other sites

  • 0

Когда у меня отключили инет, кэш не сработал - может быть потому, что указана вот такая ссылка?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

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

 

@CoDy, то есть никаким образом нельзя подключить резервно jquery, если он не загрузится с гугла? (нашла эту "фичу" скрипт на просторах интернета) 

Link to comment
Share on other sites

  • 0
@CoDy, то есть никаким образом нельзя подключить резервно jquery, если он не загрузится с гугла? (нашла эту "фичу" скрипт на просторах интернета)

 

Почему же нельзя, если очень хочется, то можно. Вот так попробуйте:

<script type="text/javascript">window.jQuery || (function () {    /* пропишите корректный урл на библиотеку и раскоментируйте блок    var script = document.createElement('script');    script.src = 'ссылка на библиотеку в другом месте';    document.getElementsByTagName('head')[0].appendChild(script);    */    alert('гугл "помер", библиотека подключена из резервного места!!!');}())</script>

Только учтите, что подключенная библиотека в секции header и в конце body  - разные "вещи". Если подключать в конце body, тогда 

 

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

 

В посте я просто писал о целесообразности такого маневра.

 

А ссылочку на гугл-либ лучше из первоисточника брать: https://developers.google.com/speed/libraries/devguide?hl=ru#jquery

Edited by CoDy
Link to comment
Share on other sites

  • 0
А в файле script.js (подключен последним среди скриптов), в котором весь код написан - вначале идет строка
нет конечно.

Посмотрите как человек подключает http://habrahabr.ru/post/132807/

http://biznesguide.ru/coding/151.html

 

Про то, где подключать, внизу или сверху, вам описали выше. 

 

А это

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

не надо никуда разбивать, это единое целое.

  • Like 1
Link to comment
Share on other sites

  • 0

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

вот это самое норм на мой взгляд и ставить это до других скриптов

  • Like 1
Link to comment
Share on other sites

  • 0

Спасибо всем большое, надо было действительно вставлять сразу после подключения эту строчку :). Теперь заработало.

То есть вот этот код 

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

рабочий.

Edited by Zverushka
Link to comment
Share on other sites

  • 0

У меня стоит загрузка жейквери с гугла.

Но вот недавно отрубился интернет и тут я увидела, что вот этот скрипт

// Загружена ли библиотекаwindow.jQuery || document.write('<script type="text/javascript" src="js/jquery-1.9.1.min.js"><\/script>');

Совсем-то и не работает :). Точнее, он подключает скрипт локально, но он делает это после других скриптов (перед концом боди), поэтому другие скрипты выдают ошибку - мол, а мы не знаем, что это за функции такие $ - итп.

Вопрос - как сделать, чтобы все заработало? :)

 

Я эту фишку увидел в html5 boilerplate

 

 <script>window.jQuery || document.write('<script src="js/jquery-1.10.1.min.js"><\/script>')</script>

 

Поставить в раздел head никак?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy