Sposoby osadzania flasha

Od jakiegoś czasu nosiłem się z popełnieniem tego krótkiego artykułu na temat sposobów osadzania flasha. W końcu dojrzałem chyba do tematu, więc nie marnując więcej czasu i miejsca, zamieszczę poniżej kilka sposobów wraz z przykładami, jak można osadzić flasha w dokumencie.

Jest to o tyle sprawa istona, iż ostatnimi czasy "Mały-miekki" zrobił nam małą niespodziankę - myślę, że każy z was doskonale zna temat patentu ActiveX. Ponadto zapewne większość z przykładów, które tutaj przytoczę, jest wam doskonale znana, ale dobrze by było tą wiedzę usytstematyzować. Dobra - dosyć gadania - zabieramy się do roboty!



1. Sposób, który proponuje nam Macromedia

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
width="338" height="56" id="test" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="testowy_flash.swf" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="testowy_flash.swf" menu="false" quality="high"
bgcolor="#ffffff" width="338" height="56" name="test" align="middle"
allowScriptAccess="sameDomain" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

Wszystko byłoby fajnie gdyby nie to, że powyższy przykładzik nie jest zgodny ze standardami o takim kwiatku jak embed już nie wspomnę (przypomnijmy, że został on oznaczony jako deprecated już w 1997 toku!).

Przykładzik



2. Metoda Flash Satay autorstwa Drew McLellana z A LIST Apart

Chyba najczęściej polecana metoda osadzania flasha. Nie korzystamy tutaj już ze znacznika embed a zatem mamy też pełną walidacje. Problem leży za to gdzie indziej. Niektóre przeglądarki oczekują na załadowanie się całego pliku swf zanim zaczną go wyświetlać, co czasami może przyprawić niejednego użytkownika o rozstrój żołądka. Wiele się nie dzieje, gdy jest to jakaś animacja poboczna, ale co w momencie, gdy jest to cały site? Albo chociaż menu nawigacyjne? Pewnie - szybkie łącza, wydajne komputery bla bla bla... na kontrprzykład proszę pomyśleć jak ładuje sie serwis z kilkoma ciężkimi plikami 24 bit png z transparentnością. Albo strony z wielgachnymi tabelami. Nie słyszę pytań. Lekiem na to zło nie jest Chuck Norris, a zrobienie loadera we flashu. Prosto i przyjemnie. Ale cóż z tego, jak IE i tak ma swoje bolączki...

Loader:

Kod Action Script:

_root.loadMovie(_root.path,0);

oraz wywołanie flasha:

starter.swf?path=co_chcemy_zaladowac.swf

Przykładzik



3. Metoda obiektów zagnieżdżonych Nested Objects

Pora na metodę używaną przez większość. Wykorzystujemy tutaj komentarze warunkowe dla IE. Coś jakbyśmy odadzali dwukrotnie obiekt z tym, że jedno jest dla IE a drugie dla przeglądarek opratych na silniku GECKO. Warto zaznaczyć, że Opera robi nam psikusa :)

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
width="200" height="200">
<param name="movie" value="test.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<!–-[if !IE]> <-->
</object>
<object data="test.swf" width="200" height="200" type="application/x-shockwave-flash">
<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" />
<p>Tekst zastępczy - widoczny jeśli obie metody osadzenia zawiodą.</p>
<!–-> <![endif]-–>
</object>

Przykładzik



4. Wykorzystanie skryptów js – metoda UFO (Unobtrusive Flash Objects) autorstwa Bobbie Van Der Slius’a

Doszliśmy do pierwszej metody, która obchodzi buga dla IE w kontrolce ActiveX. Zatem można śmiało powiedzieć, że jest to pierwszy pretendent do przyszłego standardu osadzania obiektów flash. Ale coby nie było tak różowo, ma ona swoje mankamenty: wymaga by js był włączony, ogromna waga samego skryptu wykrywającego plugin flash. Wykorzystujemy to wprawdzie przytoczony wczśniej znacznik embed, ale jako że jest on wrzucany za pomocą js, strona przechodzi walidację. Zapraszam do przykładziku i do uwag w nim.

Osadzenie:

<head>
<script type="text/javascript" src="ufo.js"></script>
<script type="text/javascript">
var FO = { movie:"test.swf", width:"200", height:"200", majorversion:"8", build:"0", xi:"true" };
UFO.create(FO, "ufoFlash");
</script>
</head>

W treści dokumentu:

<body>
<div id="ufoFlash">
<p>Treść zastępcza</p>
</div>
</body>

Przykładzik



5. Kolejna metoda wykorzystująca js – autorstwa Robeta Górczyńskiego "Gedi"

Nie mówiąc wiele - kolejna forma osadzenia flasha za pomocą js i swoiste antidodum na IE. Szczerze mówiąc jest to móim zdaniem lider wśród metod - ja osobiście polecam tą metodę!

Osadzenie:

<head>
<script type="text/javascript" src="create_flash.js"></script>
</head>

W treści dokumentu:

<body>
<div id="cel">
<script type="text/javascript">
createFlash("test.swf",200,200,"#FFFFFF","idFlasha","cel","");
</script>
</div>
</body>

Przykładzik



To na tyle przykładów. Przejrzyjcie je proszę i jeśli są jakieś uwagi, to piszczie! Koniecznie. Acha, są jeszcze znane mi dwie metody osadzenia flasha - za pomoca XML-a i XSLT, ale to już sobie darowałem. Są długie i raczej zbędne.