Element „embed“ je používán prohlížečem Netscape a jeho následovníky jako ekvivalent elementu „object“, který se využívá při vkládání flashových animací do webových stránek. Lépe řečeno, není jen ekvivalentem, ale zároveň i jedinou funkční možností vložení flashové animace do těchto prohlížečů. Problém je ovšem ten, že standard XHTML použití tohoto elementu nepřipouští.

Z výše řečeného vyplývá, že použitím elementu embed znehodnotíme stránky, které jinak dodržují standard XHTML. Tím vyvstává otázka, zda je lepší mít validní stránky či poskytnout animaci i uživatelům Mozilly, Netscape a jiných prohlížečů. Původně jsem vůbec netušil, že element embed není v XHTML podporovaný, tudíž to pro mě bylo docela překvapení. Samozřejmě jsem nechtěl, aby mi tento detail kazil celý výsledek, a tak jsem začal hledat nějaké univerzální řešení.

Pokud by šlo jen o validátor, stačí element embed se všemi parametry vkládat prostřednictvím JavaScriptového document.write(). Podle mého názoru je ale tento trik k ničemu, protože sice oklame validátor, ale problém se tím nijak nevyřeší. Následující příklad ukazuje, jak bylo prováděno vkládání objektu s Flash animací starými standardy HTML:

<object classid=“clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″ codebase=“http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0″ width=““ height=““>
    <param name=“src“ value=“flash-file.swf“>
    <embed src=“flash-file.swf“ pluginspage=“http://www.macromedia.com/shockwave/download/“
type=“application/x-shockwave-flash“ width=““ height=““>
    </embed>
</object>

Výše uvedeného ovšem v XHTML nelze použít. Správný způsob, kdy bude animace fungovat ve všech prohlížečích a dokument přitom zůstane validním XHTML aniž by primitivně klamal validátor, je tento:

<div>
   <object type=“application/x-shockwave-flash“ data=“flash-file.swf“ width=““ height=““>
   <param name=“movie“ value=“flash-file.swf“ /></object>
</div>

Skutečně je to takto jednoduché – pouhý element object, oproštěný od všech nepotřebností a uzavřený do elementu div. Ovšem má to jedno „ale“. V šesté verzi prohlížeče Microsoft Internet Explorer je vše v pořádku, avšak starší verze, a možná i starší verze některých jiných browserů, mohou dělat nepořádek. Nebudou streamovat. Naštěstí i zde si můžeme velice jednoduše pomoci následujícím postupem:

  1. Vytvořte novou flashovou animaci ve velikosti té animace, kterou chcete umístit na stránky. Do jejího prvního framu vložte ActionScript _root.loadMovie(_root.path,0);.
  2. Z této „animace“ vytvořte nový swf souboru, řekněme třeba „c.swf“. Na stránkách pak tuto svou animaci zobrazte zadáním příslušné hodnoty pro cestu k souboru, například c.swf?path=flash-file.swf.
  3. Nyní můžete klidně i za běhu stránek měnit animace. Můžete také použít přímou cestu k souboru použitím ActionScriptu _root.loadMovie("movie.swf",0);!

A tím je vyřešen problém univerzálního přístupu k Flash souborům ve všech prohlížečích při dodržení požadavků standardu XHTML. Pokud nevěříte, snad vás přesvědčí malá ukázka

Odkazy a zdroje

  • Bye Bye Embed – český překlad článku popisujícího metodu, pomocí níž se lze definitivně zbavit elementu embed; Elizabeth Castro (21. 7. 2006, Interval.cz)
  • Jak obejít aktivování pluginů v IE – úprava obcházející nutnost aktivovat kliknutím každý aktivní prvek v nových verzích MSIE; David Grudl (12. 4. 2006, La Trine)
  • Jak správně vložit Flash do stránky – validní a funkční Flash s přístupným alternativním obsahem; David Grudl (12. 4. 2006, La Trine)

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

2 Příspěvků v diskuzi

Odpovědět