Избавляемся от мигания фонового изображения в 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. 1
    DeadLy
    @

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

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

  2. 2

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

  3. 3
    @

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

  4. 4

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

  5. 5

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

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

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

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

  6. 6
    @

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

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

  7. 7

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

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

  8. 8

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

  9. 9
    @

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

    html { filter: expression(document.execCommand("BackgroundImageCache", false, true)); }
  10. 10

    Александр, я в таких штуках не разбираюсь. Если такой способ тоже работает, это хорошо.

  11. 11
    @

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

  12. 12

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

  13. 13
    @

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

  14. 14

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

  15. 15

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

  16. 16
    vitmax@list.ru

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

  17. 17
    ALex

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

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

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

  18. 18
    Макс

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