it-swarm.com.de

Bereitstellen alternativer Bilder, wenn Adobe Flash nicht verfügbar ist

Gibt es Möglichkeiten, ein alternatives GIF/PNG-Bild bereitzustellen, falls der Benutzer kein Adobe Flash installiert und/oder deaktiviert hat. Ich habe Empfehlungen gefunden, wie die folgenden von W3C, die über JavaScript die Existenz von ermitteln Adobe Flash auf dem Client: W3C Alternative Bilder bereitstellen

Ehrlich gesagt würde ich eine non JS - Technik bevorzugen. Ich denke an ein XHTML-Tag, das <noscript> entspricht. (wie <noobject>, wenn das Objekt (in unserem Fall Flash) nicht angezeigt/geladen werden kann).

Der Grund für diese Trennung ist folgender: Die Bank, für die ich arbeite, zeigt ihre Banner vorzugsweise im Flash-Format an. Falls es nicht möglich ist, sollte ein einfaches Bild gezeigt werden. In der Vergangenheit wurde es sehr wahrscheinlich auf die zuvor erwähnte Weise gelöst. Wir arbeiten gerade an einem Design-Refresh, und da bin ich über diesen Code gestolpert. Ich frage mich, ob es wirklich der eleganteste und kompatibelste Weg ist.

Eine andere Idee das fällt mir auf: Ist es tatsächlich möglich, Flash-Objekte in einer deaktivierten JavaScript-Umgebung zu laden?

17
Gerhard Dinhof

Wenn Flash installiert ist, aber Javascript deaktiviert ist, ist dies ein gültiges Szenario. Dies sollte in den meisten Browsern funktionieren:

<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>
13
Kristian J.

Ich verwende den folgenden Code für eine zierliche Verschlechterung. Es läuft gut.

<!--[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]-->
5
Raithlin

Ich weiß nicht, warum Sie Javascript vermeiden möchten, es ist die beste Lösung im Umgang mit Flash.

mit der SWFObjects Library (die bisher bekannteste für diese Angelegenheit) können Sie Folgendes tun:

<!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>

was das Skript tut, ist das Ersetzen von splashintro div durch die Flash-Datei. Wenn der Browser Flash nicht unterstützt, tut dies nichts und die splash_noflash.png wird angezeigt.

P.S. Mit dieser Technik bist du bereit für das iPhone, anstatt den blauen Würfel anzuzeigen, wird das Bild angezeigt :)

4
balexandre

Wir können ein alternatives GIF/PNG-Bild bereitstellen, falls der Benutzer kein Adobe Flash installiert und/oder deaktiviert hat.

<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>

Und auch das hinzufügen ...

<script type="text/javascript">
swfobject.registerObject("flashcontent", "9", "/path/to/expressinstall.swf");   
</script>
2
Sinju Moncy

Ich finde es, Inline-Styling zu verwenden.

Zum Beispiel:

<div style="background-image: url('...');">
    <object>
     /* Embedded Flash */
    </object>
</div>
2
Andres Vargas

Ich habe einen einfachen Weg dafür in CSS geschrieben - überhaupt kein zusätzliches JavaScript.

Benennen Sie Ihre ID/Klasse, in der sich Ihr Flash-Film befindet, und verwenden Sie ein Hintergrundbild. Wickeln Sie Ihren Flash-Film in dieses Div ein. 

Zum Beispiel:

<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.

Dann in Ihrem CSS:

#MyFlashMovie {
background: url("alternateGraphic.png");
background-repeat: no-repeat;
height: XXpx;
width: XXpx;
}

Wenn der Flash nicht verfügbar ist, beispielsweise auf dem iPhone/Pad, wird die Grafik angezeigt. Der einzige Nachteil dabei ist, dass, wenn Ihr Flash-Film einen transparenten Hintergrund verwendet, die alte Grafik durch die Übergänge angezeigt wird. Erstellen Sie im Flash-Film als unterste Ebene eine durchgehende Farbe (stellen Sie sicher, dass sie die gleiche BG-Farbe hat wie die Website), und es wird gut aussehen.

~ GreaseJunkie

0
GreaseJunkie