Избавляемся от мигания фонового изображения в IE 6

В последнее время мне все чаще стали попадаться высказывания о том, что пользователь в ряде случаев наблюдает в Internet Explorer 6-й версии мигание фонового изображения для какого-либо элемента страницы, оформленного с помощью CSS.

Это, кстати, еще один камень в сторону разработчиков пока еще самого, к сожалению, популярного браузера. Мерцание связано с некорректным кэшированием в IE 6.

Для избавления от этого бага нужно воспользоваться следующим ява-скриптом:


<script>
(function(){
	/*Use Object Detection to detect IE6*/
	var  m = document.uniqueID /*IE*/
	&& document.compatMode  /*>=IE6*/
	&& !window.XMLHttpRequest /*<=IE6*/
	&& document.execCommand ;
	try{
		if(!!m){
			m("BackgroundImageCache", false, true) /* = IE6 only */
		}
	}catch(oh){};
})();
</script>

Обидно, что из-за такой вот, казалось бы, мелочи приходится обвешивать сайт лишним JS-кодом. И все ради усмирения треклятого IE. Эх…

Комментарии (18)

  1. Вспоминается анекдот:

    – Что такое Internet Explorer в операционке Windows?
    – А это такая утелита, для того чтоб зайти на сайт
    http://www.opera.com/ и скачать оттуда браузер.

  2. Вот-вот-вот, абсолютная истина :)))

  3. Помню те времена когда все страдали от Нетскейпа и кляли его как могли… теперь смотрю история повторяется с ИЕ… я сам уже давно стараюсь по мере возможности не верстать свои работы… так как просто не хватает нервов. Кажется когда-то на Хабре видел запись о том что в ближайшем будущем ведущие разработчики браузеров подпишут соглашение о едином стандарте отображения страниц, и это будет счастье, но останутся ещё несколько миллионов упырей с ИЕ6 и для них опять прийдётся делать хаки и трахаться с версткой так как никто не хочет потерять даже одного такого клиента. Грустно вобщем…

  4. Можно и без JS. Я у себя описал, как мне кажется, более интересный способ.

  5. ближайшем будущем ведущие разработчики браузеров подпишут соглашение о едином стандарте отображения страниц

    Это было бы стастьем для веб-разработчиков, только останется всех виндоюзеров перегнать на Линакс, чтобы они забыли, что такое IE :).

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

    Единственный возможный минус этого способа – когда у заказчика нет возможности включить модуль mod_expires, если тот отключен.

  6. станется всех виндоюзеров перегнать на Линакс, чтобы они забыли, что такое IE :)

    Ну можно и без такого фанатизма… просто выпустить бесплатный принудительный апдейт для ИЕ6 который бы автоматически устанавливался при работе в сети. Если бы Майкрософт такое сделало… им бы цены не было… жаль только что это из грани фантастики… я до сих пор осознать не могу как они ИЕ7 бесплатным сделали… это наверное уже акт отчаяния …

  7. Ну можно и без такого фанатизма…

    Никакого фанатизма. Я сам на винде сижу.

  8. Тот, кто не может включить mod_expires.so делает это через .htaccess

  9. А не проще прям в CSS так написать:

    html { filter: expression(document.execCommand("BackgroundImageCache", false, true)); }
  10. Александр, я в таких штуках не разбираюсь. Если такой способ тоже работает, это хорошо.

  11. Ну по сути он делает тоже самое, что и твой, только одной строкой. На digg.com это реализовано специально для IE6. =)

  12. Окей, значит этот способ тоже возьму на заметку.

  13. Dimox, Александр Скачко, Мне тоже встречалась такая проблема. Спасибо за информацию.

  14. При каких условиях фоновое изображение мигает ?

  15. Мигает, например, при наведении курсора на ссылку, которой задано фоновое изображение через CSS.

  16. По-моему полезно

  17. Я улыбаюсь группы-людей, которые считают себя программистами, и в силу того, что не способны сделать какую-либо задачу, начинают поливать что-то грязью. Вы от бессилия свой ЛиНАХ ставите… или нет, даже знакомое слово услышали и трепетесь. Никто даже не пытался оптимизировать под Safari (Konqueror).

    У множества криворуких программистов проблема не с IE, а проблема с ДНК.
    Как говорится: чукча не читатель, чукча писатель.
    Рекомендации: меньше гундеть и больше делать.

    P.s: Вы бы еще обсудили проблемы с IE3. Вдуматься, 6 ие стоит только у тех, кому-либо денег на лицензионную винду не хватило, либо в силу своих отсутствующих умственных способностей не смог нормальный активатор поставить и получить нормальные обновления.
    В мире уже давно ходом идет ИЕ7 и ИЕ8 – а они жалуются.

  18. ALex, ты идиот. Посмотри статистику и убедись, сколько людей в рунете пользуют ие6. Продавая продукт ты обязан реализовать кроссбраузерность (я имею ввиду и Сафари, и Фаерфокс, и Оперу, и ИЕ7, и ИЕ8, и Хром, и ИЕ6(win и mac) ), а не говорить — “Ребята, мой сайт под оперу написан, ставьте ее..”