
W projekcie, nad którym teraz pracuję klient zażyczył sobie, żeby użytkownik mógł kliknięciem myszką przeładować obiekt flash z nowymi wartościami zmiennych, a wszystko to bez przeładowania strony, co było dość logiczne, bo niezbędne dane były już dostępne bez tego. Oczywiście na myśl od razu przychodzi JavaScript i na szczęście umożliwia on przeprowadzenie takiej akcji, bez zaprzęgania do roboty bardziej wymyślnych narzędzi.
Przygotowanie kodu HTML
Nie będę się zagłębiać nad szczegółami osadzania obiektu Flash w dokumencie HTML, bo na ten temat wiele już można w sieci znaleźć (na przykład na flashzone.pl), dla przypomnienia dodam tylko, że aby element był prawidłowo wyświetlany przez wszystkie przeglądarki odpowiedzialny za to fragment kodu powinien wyglądać następująco:
<objectclassid=" identyfikator_klasy_obiektu" codebase=" adres_URL_komponentu_ActiveX" id="unikalny_identyfikator" ...>
<param name=movie value="adres_URL_filmu">
...
<embed src="adres_URL_filmu" name="unikalny_identyfikator" swLiveConnect="true" ...></embed>
</object>
Oczywiście podałam tylko najistotniejsze i konieczne atrybuty. Najważniejsze bowiem, by w znaczniku <object> znajdował się atrybut id i by nie było atrybutu name. Poza tym w znaczniku <embed> musi się znajdować atrybut name identyczny z atrybutem id ze znacznika <object>. Za to nie może tam być atrybutu id. Poza tym, jeśli chcemy obiekt modyfikować za pomoca JS to w znaczniku <embed> powinien znaleźć się atrybut swLiveConnect równy true.
Osadzając obiekt Flash w dokumencie możemy mu przekazywać wartości zmiennych. Robi się to na różne sposoby na przykład w adresie filmu, który może wyglądać tak: film.swf?wariant=A. Sposoby przekazywania wartości zmiennych do Flash są różne ale nie ma to większego wpływu na to o czym będę pisać dalej.
W kodzie HTML musimy też umieścić jakieś elementy odpowiedzialne za przeładowanie Obiektu Flash z nowymi wartościami zmiennych. Niech to będą zwykłe linki:
<a onClick="flashSwitch('A');" >Wersja A</a>
<a onClick="flashSwitch('B');" >Wersja B</a>
Funkcje JavaScript
Pozostaje zatem tylko zdefiniowanie funkcji flashSwitch(param). Nie jest to nic skomplikowanego wystarczy wykorzystać metody JavaScript wbudowane w obiekt Flash. Ciało naszej funkcji może wyglądać tak:
function flashSwitch(param){
window.document.court.LoadMovie(0, "film.swf");
window.document.court.SetVariable("wariant", param);
}
albo tak:
function flashSwitch(param){
window.document.court.LoadMovie(0, "film.swf?wariant="+param);
}
Na flashzone.pl można znaleźć opis innych metod dzięki którym mozliwa jest komunikacja z obiektem Flash za pomoca JavaScript.
Ponieważ w moich wpisach można znaleźć prawie wyłącznie esencję, inwencji twórczej czytających pozostawię to jak wzbogacić funkcję flashSwitch(param) by na stronie widoczna była informacja, która wersja obiektu jest aktualnie uruchomiona.
Ostatnie komentarze