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

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

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

  2. 23 ноября 2007 г. в 11:31

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

  3. 23 ноября 2007 г. в 13:42

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

  4. 23 ноября 2007 г. в 15:01

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

  5. 23 ноября 2007 г. в 16:00

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

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

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

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

  6. 23 ноября 2007 г. в 17:17

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

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

  7. 23 ноября 2007 г. в 17:28

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

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

  8. 24 ноября 2007 г. в 02:56

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

  9. 28 ноября 2007 г. в 15:44

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

    html { filter: expression(document.execCommand("BackgroundImageCache", false, true)); }
  10. 28 ноября 2007 г. в 15:49

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

  11. 28 ноября 2007 г. в 18:26

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

  12. 29 ноября 2007 г. в 14:48

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

  13. 29 ноября 2007 г. в 18:30

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

  14. 14 декабря 2007 г. в 01:32

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

  15. 14 декабря 2007 г. в 11:41

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

  16. vitmax@list.ru
    9 января 2008 г. в 11:33

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

  17. ALex
    14 октября 2008 г. в 12:36

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

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

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

  18. Макс
    25 декабря 2008 г. в 16:26

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

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код