IE9 блокирует jQuery CDN

У меня проблемы с IE9 на нашем новом веб-сайте. Файлы jQuery не загружаются. Сначала я пробовал CDN в Google, но также пробовал CDN Microsoft, но оба не удались. Я видел сообщения об использовании последней версии jQuery. Я скачал последнюю версию (1.6.4) и это не помогло. Я понимаю, что это защита от отслеживания, но, поскольку это наш «интерфейсный» сайт, мы не можем заставить браузеры добавить наш сайт в их «белый список» или отключить защиту от отслеживания.

В то время как размещение файлов локально является очевидным следующим шагом, другая проблема заключается в том, что код аналитики Google также дает сбой.

Есть ли этому решение?


person lloydphillips    schedule 25.10.2011    source источник
comment
какой URL-адрес CDN для ваших файлов jQuery?   -  person Alastair Pitts    schedule 25.10.2011
comment
Возможно, это происходит только при использовании схемы URL-адреса файла для тестирования и jQuery, связанного с путем без протокола?   -  person Marcel    schedule 25.10.2011
comment
@AlastairPitts попробовал ajax.googleapis.com/ajax/libs /jquery/1.6.4/jquery.min.js и ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.js. Использование локального файла решает проблему (как и ожидалось), но код Google Analytics не загружается (и, следовательно, сильно замедляет загрузку страницы).   -  person lloydphillips    schedule 25.10.2011
comment
@lloydphillips: вы используете асинхронный код Google Analytics? также ваш код GA должен быть внизу страницы (чтобы он загружался последним)   -  person Alastair Pitts    schedule 25.10.2011
comment
@AlastairPitts - да, и код Analytics находится внизу страницы. Однако страница по-прежнему не отображается. Также только что понял, что у меня проблемы с файлом typekit js.   -  person lloydphillips    schedule 25.10.2011


Ответы (3)


Используйте реализацию jquery, как описано в http://html5boilerplate.com/.

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.4.min.js"><\/script>')</script>
person jhanifen    schedule 25.10.2011
comment
Таким образом, если местоположение cdn не загружается, оно вернется к вашей локальной копии, и все продолжит работать. На сайте html5boilerplate есть несколько хороших видеороликов, рассказывающих об этой реализации. - person jhanifen; 25.10.2011
comment
Я и забыл об этом! Отличное предложение. - person Alastair Pitts; 25.10.2011
comment
По-прежнему требуется вечность, чтобы «попытаться» загрузить файл cdn и прервать работу, к тому времени другие локальные файлы, требующие jQuery, загружаются в браузер (и, таким образом, не удается загрузить локальный файл). - person lloydphillips; 25.10.2011
comment
Либо у вас очень плохое интернет-соединение, либо у вас что-то не так с кодом. Не могли бы вы опубликовать свой код в gist или jsfiddle? - person jhanifen; 25.10.2011
comment
Лучшее, что я могу сделать, это указать вам на одну из проблемных страниц. Мы используем Umbraco, и, учитывая, что это только скрипт, это не ракетостроение. test.ecargo.co.nz/overview.aspx — помните, что это проблема IE9. Все остальные браузеры в полном порядке. - person lloydphillips; 25.10.2011
comment
Я заметил на нашем сайте, что код Google был над тегом end body, поэтому я разместил его ниже, и это помогает. Теперь проблема заключается только в коде typekit. Это не работает за пределами страницы — явно должно быть в разделе заголовка. Собираюсь попробовать условности. - person lloydphillips; 26.10.2011
comment
Условные операторы сделали работу для typekit. - person lloydphillips; 26.10.2011

Некоторые варианты решения jhanifen. Используя head.js lib, мы можем загружать jQuery и другие библиотеки немного быстрее:

<script src="js/libs/head.load.min.js"></script>
<script>
    head.js("https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js",function() {
      window.jQuery || head.js("js/libs/jquery-1.7.1.min.js");
    });
</script>
person Anatoly Mironov    schedule 06.02.2012

Я подумал, что лучше добавить мои результаты в ответ на случай, если кто-то нажмет на это и не просматривает комментарии, но лучше всего следить за комментариями из ответа @jhanifen. Мне пришлось использовать локальную копию jQuery, использование CDN (даже на CDN Microsoft) не сработало.

Мой код Google не располагался ниже конечного тега body, он был прямо над ним, что исправило проблему.

Typekit, мне пришлось использовать условные операторы, но тогда это лишает цели использования Typekit, особенно если учесть, что вы можете подумать, что IE9 — это «современный браузер». Сумасшедший!

Я запросил Typekit, чтобы узнать, есть ли у них обходной путь, и отредактирую это, если они вернутся с чем-то полезным.

person lloydphillips    schedule 25.10.2011