[q=memowe]Wir haben damit also eine mächtige Möglichkeit, Flash valide einzubinden und alternativen Inhalt bereitzustellen, ohne umständliche Brauserweichen verwenden zu müssen. Tut es![/q]
Jepp, das stimmt und habe ich auch. Mehrfach...
Aber leider hat sich herausgestellt (siehe
http://www.webstyleboard.de/t4185), dass diese Art der Einbindung in der Praxis nahezu unbrauchbar ist.
Der Hintergrund: Bei vielen (eigentlich den meisten) Flash-Dateien kommen sog. Preloader zur Verwendung. Diese dienen dazu, größere Dateien vorzuladen und dem User Informationen über den Verlauf des Ladevorganges zu geben. Diese Preloader sind von unverzichtbarem Wert, da ohne sie unter Umständen lange Wartepausen enstehen, in denen nichts passiert.
Lange Rede, kurzer Sinn: Bei der Verwendung der oben beschriebenen Einbindung unterschlägt der Internet Explorer (ha, wer hätte das gedacht...?) den Preloader. Der Film wird erst komplett geladen und dann angezeigt. Da der IE aber der am weitesten verbreitete Browser ist, muss leider von der oben genannten Einbindung abgeraten werden.
Der Grund für das unsinngie Verhalten ist die Quellangabe im
<object>-Tag:
|
Quellcode
|
1
|
data="pfad/datei.swf"
|
Ohne diese Angabe wird der Film mit Preloader geladen, da die Quelle ja im
<param>-Element angegeben wird.
Aber leider versagen an dieser Stelle alle anderen Browser, welche auf die Quellangabe im
<object>-Tag angewiesen sind. Die einzige Möglichkeit besteht leider darin, einen alten Netscape-Tag wieder aufleben zu lassen, und zwar der
<embed>-Tag:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
<object
data="rec/flash/intro.swf"
type="application/x-shockwave-flash"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
width="750"
height="400"
id="intro">
<param name="movie" value="rec/flash/intro.swf" />
<embed src="rec/flash/intro.swf" width="750" height="400">
</embed>
</object>
|
Wie man sieht, wurde zusätzlich im
<object>-Element die
classid für Flash angegeben.
Bedingt durch den
<embed>-Tag ist es aber leider hin mit der HTML-Validität, unabhängig vom verwendeten Doctype.
Mit dem Fallback ist das auch so eine Sache... Verwendet man alternativen Inhalt innerhalb des
<object>-Elements, so zeigt ausgerechnet der IE ihn brav nur an, wenn Flash nicht angezeigt werden kann, ganz wie das ganze gedacht ist. Alle anderen Browser zeigen den alternativen Inhalt immer an.
Fazit: Für kleinere Flash-Dateien eignet sich die obige Einbindung. Vor allem sollte sie verwendet werden, wenn es um wichtige Inhalte geht wie Navigationen, damit die Benutzbarkeit der Seite durch den Fallback gegeben ist.
Allerdings darf die Datenmenge der Flash-Datei nicht sehr groß sein, da sonst die oben beschriebenen Ladepausen entstehen. Für die meisten Flash-Dateien, welche einen Preloader benötigen, bleibt nichts anderes, als die hier beschriebene, nicht valide Variante zu wählen.
Auch hier ist es wichtig, alternative Inhalt bereitzustellen, leider ist dies aber etwas aufwändiger, als den entsprechenden Inhalt direkt mit einzubinden.
Wenn jemand einen Weg aus diesem Dilemma kennt, oder ich etwas neues erfahren sollte, gibt es mehr Infos an dieser Stelle.
LapisInfernalis