Das allseits hassgeliebte Flash ist nunmal Mode in Zeiten von Web 2.Null.
Und da es für das Einbinden des Flashplugins keinen richtigen Standard gibt, den alle Browser unterstützen, muss man auf eine Tricks zurückgreifen. Mein Beispiel bezieht sich auf den weit verbreiteten Flashplayer [1]. Es gibt mehrere Möglichkeiten:
Die Javascript-Methode: Über Javascript wird der verwendete Browser detektiert und daraufhin passendes HTML erzeugt. Geht aber nur bei aktiviertem Javascript. Siehe dazu z.B. SWFobject [2]
Die object-embed-Methode: <object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com
/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
width="400" height="300" id="movie" align="">
<param name="movie" value="flashplayer.swf?file=movie.flv">
<embed src="flashplayer.swf?file=movie.flv" quality="high" width="400"
height="300" name="movie" align=""
type="application/x-shockwave-flash"
plug inspage="http://www.macromedia.com/go/getflashplayer">
</object>
Das äußere object-Tag wird wegen dem classid-Attribut nur vom IE verarbeitet, weil so ActiveX-Komponenten eingebunden werden. Wenn ein Browser mit so einen Object nichts anfangen kann, schaut in die Kinderelemente nach verwertbaren Strukuren. Dort kann man z.B. ein Bild und einen Text wie "Bitte Flashplayer da runterladen..." einbinden. Das macht man sich hier bei Mozilla-Browsern zu nutze, die den ersten Tag ignorieren, und mit einem embed-Tag, ursprünglich eine Erfindung von Netscape, den wiederum der IE ignoriert.
Leider entsteht damit nicht standardkonformer Quelltext.
Die object-object-Methode: <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,00,0"
width="550" height="400">
<param name="movie" value="flashplayer.swf?file=movie.flv">
<param name="quality" value="high">
<!--[if !IE]> <-->
<object data="flashplayer.swf?file=movie.flv"
width="550" height="400" type="application/x-shockwave-flash">
<param name="quality" value="high">
<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer">
Bitte Flashplugin herunterladen...
</object>
<!--> <![endif]-->
</object>
Das ist ein neuer Ansatz, den ich in einem norwegischen Forum gefunden habe. [3] Hier wird außen das Object für den IE genutzt und innen statt dem embed ein object-tag, was aber durch spezielle Kommentare vom IE ignoriert wird. Das ist dann auch valider HTML-Code. Weitere Infos siehe [4] bzw. [5]
Quellen:
[1]
http://www.jeroenwijering.com/?item=JW_FLV_Player
[2]
http://blog.deconcept.com/swfobject/
[3]
http://www.diskusjon.no/index.php?showtopic=824956
[4]
http://de.selfhtml.org/css/layouts/browserweichen.htm#alternative
[5]
http://www.alistapart.com/articles/flashsatay/