MSHTML откат для данных URI: s - PullRequest
4 голосов
/ 20 сентября 2011

Мой сайт использует данные URI: для уменьшения количества HTTP-запросов к моему сайту.Проблема в том, что данные не работают в IE7, браузере, который мы должны поддерживать (нет, нам не нужен IE6).Я следовал руководству Стояна и фактически заставил его работать, но после недавнего обновления безопасности Microsoft (KB2544893, как описано в комментарии к исходной статье ), похоже, что откатперестал работать.

В комментарии, указанном выше, предлагается, чтобы я попытался отправить файл MSHTML с сообщением Content-Type message / rfc822, но я также не могу заставить его работать, и я пробовал несколько разных способов в течение несколькихчасов.

Итак, мой вопрос: : Можете ли вы заставить метод, описанный Стояном, как-нибудь работать?Я был бы очень признателен за рабочий пример, чтобы убедить меня в том, что это действительно возможно.

Ответы [ 3 ]

3 голосов
/ 02 октября 2011

Я связался со Стояном Стефановым (первоначальным автором техники), и он исправил свой оригинальный пример, чтобы он теперь работал.Простое добавление «message / rfc822» в качестве типа контента - это все, что нужно.

Исправленный пример: http://www.phpied.com/files/datasprites/testhover2.html

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

3 голосов
/ 20 сентября 2011

Лично я бы использовал условные стили.В вашей основной разметке - запустите ее следующим образом:

<!DOCTYPE html>
<!--[if IE 7]>    <html lang="en-us" class="ie7"> <![endif]-->
<!--[if IE 8]>    <html lang="en-us" class="ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-us"> <!--<![endif]-->

В вашей CSS теперь можно сделать:

.myClass {
      background-image: url(/*DATAURI GOES HERE*/);
}

и

.ie7 .myClass {
      background-image: url(fallback-image.png);
}

ОБНОВЛЕНИЕ

В дополнение к комментариям ниже, если вы беспокоитесь о производительности IE7, надежным подходом было бы сделать ваше резервное изображение IE7 спрайтом .

Таким образом, вы делаете только 1 дополнительный HTTP-вызов для пользователей IE7:

.ie7 .myClass {
      background-image: url(fallback-sprite.png);
      background-position: 150px 15px;
}
0 голосов
/ 27 сентября 2011

http://www.phpied.com/mhtml-when-you-need-data-uris-in-ie7-and-under/ вот ваше решение, я думаю

...