Предоставление альтернативных изображений, если Adobe Flash недоступен
Существуют ли какие-либо способы предоставления альтернативного изображения GIF/PNG, если у пользователя нет установленного и/или деактивированного Adobe Flash.
Ive нашел рекомендации, как, например, из W3C, которые определяют с помощью JavaScript существование Adobe Flash на клиенте: W3C Предоставление альтернативных изображений
Честно говоря, я бы предпочел технику не JS. Im думает о каком-то теге XHTML, эквивалентном <noscript>
. (например, <noobject>
, если объект (в нашем случае Flash) не может отображаться/загружаться).
Причиной этого разделения является следующее:
Банк Im, который работает, будет предпочтительно отображать свои баннеры в формате Flash. В случае, если это невозможно, должно быть показано простое изображение.
Раньше это было решено очень вероятно, как упоминалось ранее. В настоящее время мы работаем над обновлением дизайна, и вот где я наткнулся на этот фрагмент кода, который заставляет меня задаться вопросом, действительно ли это самый элегантный и совместимый способ сделать это.
Еще одна идея, которая поражает меня: действительно ли возможно загрузить Flash-объекты в отключенной среде JavaScript?
Ответы
Ответ 1
Фактически наличие установленной вспышки, но отключенный javascript является допустимым сценарием. Это должно работать в большинстве браузеров:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="600" id="flashContent">
<param name="movie" value="flash.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="flash.swf" width="800" height="600">
<!--<![endif]-->
<img src="(...)" alt="Put your alternate content here" />
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
Ответ 2
Я использую следующий код для грамотного деградации. Он работает хорошо.
<!--[if !IE]> -->
<object type="application/x-shockwave-flash" data="flash.swf" width="500" height="100">
<!-- <![endif]-->
<!--[if IE]>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
width="500" height="100">
<param name="movie" value="flash.swf" />
<!--><!--dgx-->
<param name="loop" value="false">
<param name="menu" value="false">
<param name="quality" value="high">
<img src="flash_replacement.png" width="500" height="100" alt="No Flash">
</object>
<!-- <![endif]-->
Ответ 3
Я не знаю, почему вы хотите избежать javascript, это лучшее решение при работе с Flash.
используя Библиотека SWFObjects (наиболее известная до сих пор по этому вопросу), вы можете сделать это:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> My Home Page </title>
<meta name="viewport" content="width=780">
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<div id="splashintro">
<a href="more.html"><img src="splash_noflash.png" /></a>
</div>
<script type="text/javascript">
var so = new SWFObject("csplash.swf", "my_intro", "300", "240", "8", "#338899");
so.write("splashintro");
</script>
</body>
</html>
то, что делает script, заменяет div splashintro флеш файлом, если браузер не поддерживает Flash, затем ничего не делает, а splash_noflash.png.
P.S. С помощью этой техники вы готовы к iPhone, вместо того, чтобы показывать синий куб, он покажет изображение:)
Ответ 4
Я использую встроенный стиль, чтобы сделать трюк.
Например:
<div style="background-image: url('...');">
<object>
/* Embedded Flash */
</object>
</div>
Ответ 5
Мы можем предоставить альтернативное изображение GIF/PNG, если у пользователя нет установленного и/или деактивированного Adobe Flash.
<object id="flashcontent classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="550px" height="400px">
<param name="movie" value="mymovie.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="mymovie.swf" width="550px" height="400px">
<!--<![endif]-->
<p>
Fallback or 'alternate' content goes here.
This content will only be visible if the SWF fails to load.
</p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
А также добавьте это...
<script type="text/javascript">
swfobject.registerObject("flashcontent", "9", "/path/to/expressinstall.swf");
</script>
Ответ 6
Я написал простой способ сделать это в CSS - никакого лишнего JavaScript вообще не существует.
Назовите свой ID/Class, где находится ваш Flash-фильм, и используйте фоновое изображение. Оберните свой Flash-фильм внутри этого div.
Например:
<div ID="MyFlashMovie"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="800" height="600" id="flashContent">
<param name="movie" value="flashMovie.swf" />... etc., etc.</object>
</div> etc.
Затем в вашем CSS:
#MyFlashMovie {
background: url("alternateGraphic.png");
background-repeat: no-repeat;
height: XXpx;
width: XXpx;
}
Если Flash недоступен, скажем, на iphone/pad, отобразится графический файл. Единственный недостаток этого, который я нашел, заключается в том, что если ваш Flash-фильм использует прозрачный фон, вы увидите графический файл alt через переходы. Просто сделайте сплошной цвет в Flash-ролике как ваш самый низкий уровень (убедитесь, что он тот же самый цвет bg, что и веб-сайт), и он будет выглядеть нормально.
~ GreaseJunkie