2 grudnia 2010

Obiekt Flash zgodny z XHTML1.1

Współczesne witryny internetowe składają się z wielu elementów prezentujących ich zawartość i design. Na początku warto przytoczyć, co wchodzi w skład elementów prezentujących wygląd witryn internetowych, tzn.: kaskadowe arkusze stylów, tzw. CSS, elementy graficzne, animacje itp. Dziś chciałbym zająć się ostatnim wspomnianym elementem, a dokładniej animacjami – obiektami typu SWF.

Co odróżnia obiekty SWF od pozostałych elementów? Odpowiedź jest dość prosta. Większość elementów możemy bez problemu osadzić w dokumencie XHTML. Z obiektami SWF jest podobnie, jednak występuje jeden „mały” mankament – zgodność ze standardem XHTML udostępnionym przez konsorcjum W3C.

Do niedawna, aby umieścić animację SWF w dokumencie HTML wystarczyła deklaracja:

HTML:
<object width="400" height="100">
  <param name="movie" value="somefilename.swf" />
  <embed src="plik.swf" width="400" height="100"></embed>
</object>


Niestety, powyższa deklaracja nie spełnia najnowszego standardu XHTML 1.1. Z pomocą przychodzi skrypt AC_RunActiveContent wykorzystujący JavaScript do poprawnego wyświetlenia obiektu SWF.

Jak więc użyć skrypt do wyświetlenia elementu SWF? Spójrzmy na poniższy kod:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <script src="AC_RunActiveContent.js" type="text/javascript"></script>
  <title>Obiekt Flash zgodny z XHTML1.1</title>
</head>
<body>
 <script type="text/javascript">

 AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0', 'width', '400', 'height', '100', 'src', 'zrodlo', 'quality', 'high', 'pluginspage', 'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash', 'movie', 'zrodlo');
 </script>
 <noscript>
   <p>Twoja przeglądarka nie obsługuje JavaScript.</p>
 </noscript>             
</body>
</html>


Na samym początku, w sekcji nagłówkowej <head>, należy umieścić odniesienie do pliku skryptu:

HTML:
<script src="AC_RunActiveContent.js" type="text/javascript"></script>

W sekcji <body> w znaczniku <script> umieszczamy kod JavaScript odpowiedzialny za wyświetlanie obiektu SWF:

JavaScript:
AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0', 'width', '400', 'height', '100', 'src', 'zrodlo', 'quality', 'high', 'pluginspage', 'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash', 'movie', 'zrodlo');

Jak możemy zauważyć, skrypt przyjmuje kilka parametrów:
- codebase: identyfikuje lokalizację Flash Playera (przeglądarka automatycznie pobierze Playera, jeśli nie został wcześniej zainstalowany),
- width: szerokość animacji w pikselach,
- height: wysokość animacji w pikselach,
- src: określa lokalizację pliku .swf (podajemy bez rozszerzeń),
- quality: jakość wyświetlanej animacji (low, high, autolow, autohigh, best),
- pluginspage: określa lokalizację Flash Playera, który użytkownik może pobrać w przypadku braku oprogramowania),
- movie: określa lokalizację pliku .swf (podajemy bez rozszerzeń).

Wymienione powyżej parametry należy umieszczać w skrypcie w następujący sposób:

JavaScript:
AC_FL_RunContent(‘parametr’, ‘wartość’, ‘parametr’, ‘wartość’, ... ,‘parametr’, ‘wartość’);

Szczegółowy opis niewspomnianych w tym artykule opcjonalnych parametrów i opisany skrypt AC_FL_RunContent dostępny jest na stronie internetowej Adobe: http://www.adobe.com/devnet-archive/activecontent/.

Dodatkowo po znaczniku zamykającym </script> został umieszczony fragment kodu HTML, który zostanie wywołany w sytuacji, gdy przeglądarka internetowa nie będzie w stanie obsłużyć JavaScript.

HTML:
<noscript>
  <p>Twoja przeglądarka nie obsługuje JavaScript.</p>
</noscript>


Na zakończenie kod został poddany walidacji na stronie internetowej konsorcjum W3C http://validator.w3.org/


Zaprezentowany sposób zagnieżdżania obiektów SWF w dokumentach HTML jest zgodny ze standardem XMTML 1.1 i pozwala w dowolny sposób skonfigurować animację Flash. Niestety, gdy użytkownik wyłączy obsługę JavaScript w przeglądarce internetowej, skrypt nie zostanie uruchomiony. Mam nadzieję, że zaprezentowany sposób stanowi alternatywę pomiędzy zgodnością standardów W3C, a prezentacją danych na stronach internetowych.