Какие именно правила для избежания предупреждения «смешанного содержимого» в IE из-за фоновых изображений? - PullRequest
14 голосов
/ 05 августа 2011

Это относится к SSL и смешанному контенту из-за фоновых изображений CSS , но на этот вопрос нет принятого ответа, и вопрос, который я задаю, немного более конкретен.

В некоторых случаях при доступе к веб-сайту HTTPS IE выдает предупреждение «смешанное содержимое», если элементу присваивается стиль с фоновым изображением. Я нашел одну ссылку на форуме , в которой говорилось, что предупреждения можно избежать, если вы поместите ссылку в таблицу стилей, например

#someElement a {
    width:11px;
    height:11px;
    display:block;
    overflow:hidden;
    background:url(../images/sprites_list.png) no-repeat;
    cursor:hand;
    cursor:pointer;
    background-position:0px -72px;
}

, но не при попытке создать встроенный элемент, например

$('#someElement').append("<a title='something' style='background: url(../images/sprites_list.png) no-repeat; ... // etc

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

Какая здесь настоящая история? Есть ли какое-то «официальное» объяснение или хотя бы ссылка на правила? Или, если это не так, существует ли стандартный набор руководящих принципов, которые, если их соблюдать, крайне маловероятно, чтобы вызвать предупреждение?

Ответы [ 3 ]

10 голосов
/ 06 августа 2011

Использование полностью определенного URI позволит избежать проблемы IE8 и ниже, неправильно создавая фиктивный URI, например: about: /relative/file.png, который вызывает предупреждение о смешанном контенте. Эта проблема была исправлена ​​в IE9.

0 голосов
/ 17 ноября 2013

После бесчисленных часов той же проблемы, я не мог понять проблему. Затем я начал просматривать свой исходный код и нашел его. Я использую HTML5 и использую шив внутри условного комментария, чтобы элементы HTML5 работали в IE8 и ниже.

<!--[if lte IE 8]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

Моя проблема заключалась в том, что IE8 и down выдавали ошибку. Эта проблема была решена путем изменения вышеуказанного в https со следующим:

<!--[if lte IE 8]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

Я не проверял это, но я думаю, что может сработать следующее.

<!--[if lte IE 8]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

Это может спасти кого-то в будущем. Если нет, то удачи!

0 голосов
/ 05 августа 2011

Я думаю, что причина в том, что вы получаете разные результаты, не в том, что один метод является «более безопасным», а в том, что в базовом документе отсутствует URL-адрес, вызывающий проблемы, когда IE загружает его.Я ожидаю, что вы получите предупреждение, если вы поместите этот A непосредственно в документ вместо того, чтобы вносить его в сценарий после загрузки страницы.

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

Кроме того, URL-адреса, относящиеся к протоколу, потрясающие.Просто в общем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...