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

23 ноября 2007 г.

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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. Эх…

* * *

В профессиональном интернет-магазине “Здоровье.ру” предлагаются весы электронные различных моделей с высокой точностью измерения. Возможна бесплатная доставка по Москве.

Теги: , , автор: Dimox | рубрика Браузеры

Комментарии (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 так написать:

    1
    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) ), а не говорить — “Ребята, мой сайт под оперу написан, ставьте ее..”

Присоединяйтесь к обсуждению!

Отправляя кoммeнтapий, вы автоматически принимаете правила кoммeнтиpoвaния на этом блоге.

Правила кoммeнтиpoвaния на блоге dimox.name:

  1. Первый кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.
  5. Комментарии не по теме удаляются.

Подписаться, не комментируя
  • Похожие статьи
  • Предыдущие из рубрики