Проблемы с Opera: Нет изображений в версии для печати

Есть страница сайта. На ней размещено некое изображение, например логотип. Нужно чтобы при просмотре на экране показывался один вариант изображения, а при печати другой.

Решение кажется очевидным:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Баг Opera: Нет изображений в версии для печати</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css" media="print">
   #logoScreen {
      display: none;
   }
</style>
<style type="text/css" media="screen">
   #logoPrint {
      display: none;
   }
</style>
</head>
<body>
   <img src="images/logo.jpg" id="logoScreen">
   <img src="images/logo_bw.gif" id="logoPrint">
</body>
</html>

Однако не все так просто.

Проблема

В браузере Opera при выводе на печать изображение id="logoPrint" отображаться не будет. Причина этого бага в том, что Opera не грузит те картинки, которые были скрыты.

Решение

Для того чтобы обойти эту особенность Opera нужно заставить браузер прогрузить скрытые изображения. Добиться этого можно используя JavaScript :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Баг Opera: Нет изображений в версии для печати</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="javascript" type="text/javascript">

   //Создаем объект типа Image
   operahack = new Image ();

   //Используем вновь созданый объект, для того
   //чтобы загрузить логотип версии для печати
   operahack.src = "images/logo_bw.gif";

</script>
<style type="text/css" media="print">
   #logoScreen {
      display: none;
   }
</style>
<style type="text/css" media="screen">
   #logoPrint {
      display: none;
   }
</style>
</head>
<body>
   <img src="images/logo.jpg" id="logoScreen">
   <img src="images/logo_bw.gif" id="logoPrint">
</body>
</html>

Обратите внимание, что мы не используем детектирование Opera . В этом нет необходимости – изображение должно быть загружено в любом случаи.

Источники

Шуркаев А. В. Прячем счётчики
http://htmlcoder.visions.ru/CSS/?24

По всем вопросам:

+7 927 120 08 06

E-mail: info@belonogov.ru
ICQ: 30828135

Хостинг: Valuehost