Главная Браузеры

Избавляемся от мигания фонового изображения в 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?
    — А это такая утелита, для того чтоб зайти на сайт
    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)), а не говорить -- «Ребята, мой сайт под оперу написан, ставьте ее.»