Skip navigation.

Michał Zięba | devBlog

Najtrwalszymi zasadami wszechświata są przypadek i błąd...

Flash a Markup Validation Service

,

This page is not Valid XHTML 1.0 Transitional!
No właśnie. Wczoraj dopieszczałem sobie pewną stronę, gdy Validator wyrzucił mi około 13 błędów w stylu:
 there is no attribute "X"

W nagłówku jest jak byk ustawione Transitional, powinno działać... a jednak nie ;-)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1—transitional.dtd">

Myślę i myślę i... nic. Na szczęście narzędzie do walidacji opisuje błędy i proponuje metody ich usunięcia ;-)

If you received this error when using the <embed> element to incorporate flash media in a Web page, see the FAQ item on valid flash.


Udałem się więc do FAQ, poczytałem trochę i okazało się, że wiele narzędzi do publikacji plików .swf (shockwave flash) generuje kod oparty na tagu <embed>, który nigdy nie był częścią standaryzowanego HTML-a - stąd masa błędów przy walidacji witryny.

Czytając dalej, dowiadujemy się, że istnieje wiele technik poprawnego osadzenia pliku .swf na naszej stronie, jedną z nich jest tzw. Flash Satay

W skrócie
  • nie używamy tagu <embed>, zamiast niego posługujemy się wyłącznie tagiem <object>
  • do ładowania małych plików .swf wystarczy nam kod podany niżej
  • do ładowania większych plików stosujemy pewną sztuczkę


Kod do osadzenia małych plików swf:
<object
   type="application/x-shockwave-flash"
   data="movie.swf" 
   width="400"
   height="300">
   <param name="movie" value="movie.swf" />
</object>

Jego minusem jest to, że zacznie wyświetlać plik dopiero wtedy, gdy go w całości pobierze - więc jeśli mamy pokaźną animację, użytkownik zobaczy puste miejsce (o wymiarze pliku .swf) i dopiero po jego pobraniu ukaże mu się animacja.

Aby temu zapobiec, stosujemy sprytny trick: tworzymy plik .swf o małych rozmiarach (czyli taki, który szybko się pobierze) i w nim dopiero ładujemy żądany plik.

Przygotowanie pliku loader.swf:
Tworzymy najzwyklejszy film o dowolnym rozmiarze, a w jego pierwszej klatce umieszczamy akcję
_root.loadMovie(_root.path,0);

Następnie zamiast osadzania pliku np. "move.swf", dodajemy nasz plik loader.swf z odpowiednim parametrem:
loader.swf?path=move.swf

co spowoduje załadowanie się pliku loader.swf (w nim możemy dodać pasek postępu lub tekst w stylu "loading...") a po pewnym czasie właściwego pliku movie.swf

Gotowy kod:
<object
   type="application/x-shockwave-flash"
   data="loader.swf?path=movie.swf" 
   width="400"
   height="300">
   <param name="movie" value="loader.swf?path=movie.swf" />
</object>


Teraz możemy cieszyć oczy ślicznym napisem
This Page Is Valid XHTML 1.0 Transitional!

Jeszcze raz dodam, metoda ta opisana jest dokładnie w artykule Flash Satay (autor: Drew McLellan)

Color Palette GeneratorRównoległa instalacja Opery 9.xx i 10.00 na Ubuntu

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies

Download Opera, the fastest and most secure browser