Относительный к протоколу URL в CSS для нескольких поддоменов - PullRequest
5 голосов
/ 14 сентября 2011

На нашем php-сайте недавно были добавлены ssl-сертификаты для поддержки протокола https, и у нас возникли проблемы с IE6 через IE8, хотя на наших страницах нет ресурсов, вызываемых через http.

Я прочитал это сообщение: http://paulirish.com/2010/the-protocol-relative-url/

Итак, по сути, мне нужно заменить все

background: url('/images/whatever.gif');

С:

background: url('//www.mydomain.com/images/whatever.gif');

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

Ответы [ 3 ]

7 голосов
/ 14 сентября 2011

Вам не нужно добавлять имя хоста, чтобы использовать относящиеся к протоколу URL. Форма, которую вы уже используете, относительна к протоколу, потому что она не определяет протокол.

Можете ли вы подробно описать проблемы, с которыми вы столкнулись? Вы подтвердили с помощью теста, что URL с именем домена решит вашу проблему?

PS: Если у вас есть сотни CSS-файлов, вы, вероятно, в любом случае будете более довольны системой динамической генерации, но это отдельный вопрос.

1 голос
/ 14 сентября 2011

Проблема заключается в всплывающих окнах в IE6, 7, 8, которые говорят, что на странице смешанный контент (который должен быть http-ресурсами, включенными в страницу https).Chrome, FF4 и выше и IE9 не показывают эти всплывающие окна, и это правильно.Ресурсы, включенные в http, отсутствуют.

Некоторые сообщения в блогах указывают на фоновые URL как на источник этой проблемы.В одном из сообщений (http://blogs.msdn.com/b/ieinternals/archive/2009/06/22/https-mixed-content-in-ie8.aspx) есть комментарий от Эрика Лоу из MSFT, в котором говорится:

Отладчик сообщает, что следующий URL-адрес вызывает запрос:

"about: /images/lightview/inner_slideshow_play.png"

Конечно, этот URL фактически не существует в вашей разметке. Похоже, что существует динамическое создание IFRAME и внедрение содержимого в этот фрейм.URL по умолчанию для пустого фрейма: about: blank, что приводит к подсказке.

и ...

Другие особенности, о которых нужно знать: в IE6 мытрактовать «about: blank» как небезопасный контент, а также «javascript:» и «res:». В IE7 мы исправили случай «about: blank», но мы (пока) не изменили javascript и res.

Таким образом, MSFT знает и подтверждает эту проблему для своих старых браузеров, которые создают IFRAME и внедряют контент, который затем генерирует ошибку.

Большинство обходных путей, с которыми я столкнулся, указывают на использование протокола-относительные URL, как впервый URL, который я показал.Я не уверен, что вы можете рассмотреть 'background: url (' / images / what.gif ');'как вызов без протокола из-за этой печально известной ошибки IE6 to 8.

- Правка: работа над решением.Мы нашли это в наших файлах javascript, и кажется, что это была настоящая проблема с самого начала:

<input target="_blank"class="sub" type="button" style="background-image:url(../images/name.gif);">
0 голосов
/ 14 сентября 2011

Хорошо! Понял.

Кстати, если кто-то сталкивается с необходимостью выяснить, какие именно проблемы у них возникают с IE6, IE7 или IE8 на веб-страницах https, которые, как сообщается, содержат смешанный контент, используйте этот скрипт:

Итак, в конце концов, это была кнопка, о которой я говорил в последнем посте. Замена его на импортированный класс, замена фонового изображения на простой фон и избавление от ../ в начале сделали свое дело.

Спасибо всем за вашу помощь, я все равно отмечу ответ на вклад Неда, так как он был чем-то полезен.

...