2012-12-15 4 views
5

jQuerify - это небольшой букмарклет для добавления поддержки jquery к отображаемой в данный момент веб-странице. Посмотрите на эту страницу: http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet/jQuerify не работает с facebook на chrome

Эта демонстрация сообщит мне, если jquery уже загружен, загрузите его, если нет, затем отобразите активную версию. Моя проблема: ничто не отображается на некоторых страницах при просмотре с помощью google chrome, например facebook, google (а не в кешированной странице, а в результатах страницы). Работает на этих страницах при использовании IE.

Я попытался отключить пользовательскую сессию google на chrome, но у меня все еще есть проблема. Я думал, что это вызвано https url. Но он отлично отображается в IE после подтверждения «отображать весь контент».

Возможно, произошла неправильная настройка в Chrome? Есть ли какое-либо исправление для jQuerify или я должен отказаться и найти другое решение для загрузки jquery и удаленного скрипта?

Благодарим за консультацию.

ответ

8

В Google Chrome вы можете увидеть сообщение об ошибке в консоли браузера.

Он говорит: Отказался, чтобы загрузить скрипт «http://code.jquery.com/jquery.min.js», потому что он нарушает следующие директивы Содержание политики безопасности: «скрипт-Src https: // . facebook.com http: // .facebook.com https: // .fbcdn.net http: // .fbcdn.net * .facebook.net * .google-analytics.com * .virtualearth.net .google .com 127.0.0.1: * .spotilocal.com: * chrome-extension: // lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'небезопасно-eval' https: // .akamaihd.net http: // .akamaihd.net " ,

Это связано с тем, что Facebook реализовал функцию безопасности, которая реализована с помощью HTTP-заголовка «X-WebKit-CSP».

Именно поэтому текущая реализация на Facebook влияет на загрузку внешних скриптов в WebKit на основе браузеров (Chrome и Safari) jQuerify букмарклет прекрасно работает на Firefox и IE.

Решения для Chrome, вы можете сделать это с помощью следующих подходов:

  • Так как вы можете видеть в указанных выше деталей, 127.0.0.1:* поддерживается. Просто запустите простой веб-хост в вашей системе (например, веб-сервер Apache). Скопируйте jquery-файл jquery в ваш каталог, связанный с Apache, в вашей системе. Теперь этот файл будет доступен с помощью пути, такого как http://127.0.0.1/jquery.js (Примечание: не используйте http://localhost/ здесь). В ярлыке jQuerify измените путь к файлу jQuery от http://code.jquery.com/jquery.min.js до http://localhost/jquery.js. Теперь букмарклет будет работать нормально.

              ИЛИ

  • Загрузите весь код JQuery в букмарклет, так что он не загружает внешние файлы сценариев.Не рекомендуется, так как это не так полезно, как первый подход, если вы хотите использовать его для отладки через файл jQuery.
+1

Знаете ли вы, можно ли загружать внешние скрипты через расширения браузера? У меня есть букмарклет, загружающий много кода и предназначенный для использования людьми, которые не запускают локальный веб-сервер ни при каких обстоятельствах. – Max

+0

Попробуйте https://builder.addons.mozilla.org/ и https://developer.mozilla.org/en-US/docs/XUL/School_tutorial ... вы должны иметь возможность создавать такие расширения для Firefox ... вам нужно будет пройти политику Mozilla, если вы хотите публиковать ее публично ... аналогично, вы должны иметь возможность находить ресурсы для Chrome & Opera ... ИЛИ ... вы можете просто загрузить файлы JS и включить кеширование, чтобы использование повтора отлично работает (HTTP-заголовок с контролем кеша делает это ... как вы можете видеть в закладках по адресу http://jsbookmarklets.com/) –

+0

Ввод всего кода в букмарклет не будет работать, если вам нужно загрузить другой сайт в скрытом IFRAME, чтобы делать запросы на сервер в этом домене, который в противном случае был бы предотвращен кросс-доменными ограничениями. «Веб-обозреватели браузеров не должны влиять на CSP ... Но ни один из браузеров не делает это правильно. Все причины нарушения CSP и предотвращение функционирования букмарклета». https://github.com/blog/1477-content-security-policy Итак, это ошибка, которая должна быть исправлена ​​во всех браузерах. – Michael

Смежные вопросы