Navigace

Hlavnφ menu

 

Flash a nßhrada elementu embed elementem object v XHTML

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

Zßbojnφk, Ond°ej (20. 3. 2004)