Для IE6 устраняем flickering - обращение к серверу

Подготовил: Евгений Рыжков Дата публикации: 08.02.2009
Последнее обновление: 09.02.2009

Проблема

В IE6 при наведении на ссылку, содержащую фоновый рисунок, возле курсора появляются на мгновение песочные часы — это Internet Explorer 6 загружает картинку с сервера, т.к. не умеет такие картинки кэшировать. Этот баг назвали flickering или «дрожание фона». Пример. Особенно это раздражает, когда в ряд идет список ссылок.

Решение 1 — javascript

Это одно из лучших решений, несмотря на использование javascript. Автор Dan Popa. Преимущеста:

  • простота
  • никаких ограничений на использование фоновых изображений (можно использовать background-repeat, background-position)
  • валидный код

Недостаток:

  • использование javascript
<script type="text/javascript">
try {
if(navigator.userAgent.indexOf('MSIE'))
document.execCommand('BackgroundImageCache', false, true);
} catch(e) {}
</script>

Результат.

Решение 2 — filter

Автор тот же. Преимущества:

  • простота
  • никаких ограничений на использование фоновых изображений (можно использовать background-repeat, background-position)

Недостатки:

  • замедляет работу браузера
  • не проходит валидацию

CSS:

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

Результат.

Существует еще ряд методов, которые не впечатлили — посмотреть можно тут и тут.

Теги:
Показать комментарии