Избавляемся от мигания фонового изображения в 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)
Вспоминается анекдот:
– Что такое Internet Explorer в операционке Windows?
– А это такая утелита, для того чтоб зайти на сайт
http://www.opera.com/ и скачать оттуда браузер.
Вот-вот-вот, абсолютная истина :)))
Помню те времена когда все страдали от Нетскейпа и кляли его как могли… теперь смотрю история повторяется с ИЕ… я сам уже давно стараюсь по мере возможности не верстать свои работы… так как просто не хватает нервов. Кажется когда-то на Хабре видел запись о том что в ближайшем будущем ведущие разработчики браузеров подпишут соглашение о едином стандарте отображения страниц, и это будет счастье, но останутся ещё несколько миллионов упырей с ИЕ6 и для них опять прийдётся делать хаки и трахаться с версткой так как никто не хочет потерять даже одного такого клиента. Грустно вобщем…
Можно и без JS. Я у себя описал, как мне кажется, более интересный способ.
Это было бы стастьем для веб-разработчиков, только останется всех виндоюзеров перегнать на Линакс, чтобы они забыли, что такое IE :).
Neutrino, да, твой варианта более удобен. Если понадобится лично мне бороться с этим глюком, то буду обязательно использовать твое решение.
Единственный возможный минус этого способа – когда у заказчика нет возможности включить модуль mod_expires, если тот отключен.
Ну можно и без такого фанатизма… просто выпустить бесплатный принудительный апдейт для ИЕ6 который бы автоматически устанавливался при работе в сети. Если бы Майкрософт такое сделало… им бы цены не было… жаль только что это из грани фантастики… я до сих пор осознать не могу как они ИЕ7 бесплатным сделали… это наверное уже акт отчаяния …
Никакого фанатизма. Я сам на винде сижу.
Тот, кто не может включить mod_expires.so делает это через .htaccess
А не проще прям в CSS так написать:
Александр, я в таких штуках не разбираюсь. Если такой способ тоже работает, это хорошо.
Ну по сути он делает тоже самое, что и твой, только одной строкой. На digg.com это реализовано специально для IE6. =)
Окей, значит этот способ тоже возьму на заметку.
Dimox, Александр Скачко, Мне тоже встречалась такая проблема. Спасибо за информацию.
При каких условиях фоновое изображение мигает ?
Мигает, например, при наведении курсора на ссылку, которой задано фоновое изображение через CSS.
По-моему полезно
Я улыбаюсь группы-людей, которые считают себя программистами, и в силу того, что не способны сделать какую-либо задачу, начинают поливать что-то грязью. Вы от бессилия свой ЛиНАХ ставите… или нет, даже знакомое слово услышали и трепетесь. Никто даже не пытался оптимизировать под Safari (Konqueror).
У множества криворуких программистов проблема не с IE, а проблема с ДНК.
Как говорится: чукча не читатель, чукча писатель.
Рекомендации: меньше гундеть и больше делать.
P.s: Вы бы еще обсудили проблемы с IE3. Вдуматься, 6 ие стоит только у тех, кому-либо денег на лицензионную винду не хватило, либо в силу своих отсутствующих умственных способностей не смог нормальный активатор поставить и получить нормальные обновления.
В мире уже давно ходом идет ИЕ7 и ИЕ8 – а они жалуются.
ALex, ты идиот. Посмотри статистику и убедись, сколько людей в рунете пользуют ие6. Продавая продукт ты обязан реализовать кроссбраузерность (я имею ввиду и Сафари, и Фаерфокс, и Оперу, и ИЕ7, и ИЕ8, и Хром, и ИЕ6(win и mac) ), а не говорить — “Ребята, мой сайт под оперу написан, ставьте ее..”