Flash a Markup Validation Service
Sunday, 6. July 2008, 12:14:54
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)








How to use Quote function: