V-Smart - Twój partner w biznesie internetowym

Internet Explorer 8 i Flash Player 10 problem

Wstajesz rano, przecierasz oczy, myślisz "o jaka piękna pogoda" i "życie takie piękne jest". Spokojnie... Zaraz pewnie zadzwoni, ktoś z problemem, który będziesz musiał szybko rozwiązać. Wykrakałeś? Hehe. Ano więc zadzwonił szef i mówi, ze wszystkie nasze aplikacje napisane we Flashu wywalają błędy pod najnowszym dzieckiem MałegoMiękkiego zwanym Internet Explorer 8. Jak to zwykle bywa w magicznym świecie informatyki - otwierasz IE8, odpalasz aplikacje i wszystko działa. Wydawałoby się, że trzeba oddzwonić i wytłumaczyć szefowi, że ma zwidy 😉 Jednak w chwili chwytania telefonu okazuje się, że na skrzynce znalazło się kilkanaście informacji od niezależnych jednostek, które łączyło jedno stwierdzenie - NIE DZIAŁA.

Zatem zabraliśmy się do testów. Nie chodziło o jedna konkretną aplikację zatem odpadł jakiś przypadkowy błąd. Pierwszym pomysłem (zazwyczaj najlepszym) okazał się upgrade Flash Player'a do najnowszej wersji pod niezależnymi przeglądarkami (IE8, FF). Kolejne odpalenie "niedziałających" aplikacji udowodniło samemu programiście, że jednak prawdę inni mówili / pisali. Objaw był następujący.

W Internet Explorer w wersji 8 (wersja Win nie istotna) z Flash Playerem w wersji najnowszej czyli 10.0.42.34 aplikacja flash a konkretnie animacja wywala się mniej więcej w samym środku. Reakcja przeglądarki jest dwojaka: Internet Explorer wykonał błąd i zostanie zamknięty lub reset strony z informacją, że została przeładowana po błędzie. Dodajmy na marginesie, że firefox nie przedstawiał podobnych błędów.

Pierwsza próba zlokalizowania problemu. Wywalamy Flash Player 10 i próbujemy zamontować poprzednią wersję. Ku naszemu zdziwieniu flash-installer informuje nas, że jest wersja nowsza i starszej zainstalować nie można. Kolejne podejście to już pytanie do nieśmiertelnego, ponadczasowego, wszystkowiędzącego wujka Googla, którego mleko firmowe niedługo będziemy oglądać w naszej lodówce a program jego chłodzenia synchronizować będziemy z oczywiście darmowym serwerem GoogleCoolingPlan.com o adresie IP 9.9.9.9 😉 Wujek przedstawił wiele informacji na temat, że problem jest ale niestety żadnych konkretnych jak go rozwiązać.

No niestety. Należało odpalić oryginalna wersję Adobe Flash CS4, znaleźć źródła aplikacji i porzeźbić troszeczkę w kodzie. Po 2-3 godzinach zabawy, testowania, naciskania F5 w przeglądarce znalazła się funkcja rodem z Action Script 2.0, która powodowała problem (w zasadzie metoda a nie funkcja). Załóżmy, że dynamicznie ładujemy obrazek do aplikacji flash, konkretnie do obiektu, za pomocą metody loadClip(). Wszystko jest wporzo dopóki, nie chcemy usunąć tego obrazka stamtąd za pomocą metody removeMovieClip(). Okazuje się, że to jest jedyny sprawca błędu, o którym słychać było głośno od rana. Rozwiązanie jest banalne. Zamiast felernej metody należy klepnąć unloadMovie() w obiekcie i wszystko cudownie zaczyna wracać do normy.

Podsumowując dyskusję chciałbym zauważyć, że jeśli nie mamy dostępu do źródeł aplikacji flash to jesteśmy w stanie zrobić bardzo mało (iść na fajkę, kawę itd). W Sieci znalazłem masę informacji o tego typu problemach i zazwyczaj dotyczyły one darmowych aplikacji lub aplikacji, które zostały wykonane na tzw. zlecenie. W supporcie Adobe nie znalazłem najmniejszej informacji o tym, że w którejś subwersji Flash Player'a cokolwiek zostało zmienione. Niestety pechowa metoda jest dość powszechnie używa w sieci więc zakładam, że problem jest dużo większy niż mi się wydaje.

Be Sociable, Share!
Zakres tematyczny: Programowanie   autor: yarzombo Dodaj komentarz