[js/flash] Opera, onunload

0

witam.
najpierw zarys sytuacji: mam odtwarzacz video w as3 (flash/flex), który generuje statystyki. w tej chwili dane ze statystyk są wysyłane co 2s (mniejsza z tym, że to cokolwiek za często), żeby w przypadku zamknięcia zakładki/przeglądarki/przejścia na inną stronę nie stracić czasu zakończenia odtwarzania filmu. można to rozwiązać dużo ładniej - buforować dane i wysyłać dużo rzadziej, w pakietach po kilka-kilkanaście zdarzeń lub przy zamknięciu okna przeglądarki. i tu jest problem: zamknięcie okna można łatwo oprogramować podpinając się w js pod unload lub onbeforeunload, załatwia to praktycznie wszystkie przeglądarki (nawet wybredne safari) - z wyjątkiem opery, która po prostu ignoruje unload; taki "ficzer" ma i już :/
co z tym zrobić? chciałbym uniknąć stukania co chwila do serwera, co prawda tylko dla Opery i tam, gdzie jest wyłączony js, więc to nie będzie duży procent użytkowników, ale jest to mało eleganckie rozwiązanie. tak więc jest mi potrzebny sposób na zareagowanie na zamknięcie zakładki pod Operą, wszystko jedno, czy w js czy flash.

pod operą nie działa window.onunload, window.onbeforeunload, document.addEventListener('unload', function() {...}) ani window.attachEvent('onunload', function() {...}). nie działa też stworzenie ramki i sprawdzanie z poziomu rodzica z interwałem 1ms czy została zamknięta. Flash niestety nie posiada możliwości zareagowania na zamknięcie okna, czytałem o SharedObject, które żyje jakiś czas po zamknięciu przeglądarki, ale wymaga ciągłego zapisywania danych i reagowania na flush, ogólnie nie jest zbyt wiarygodne.

ktoś ma jakiś pomysł? zarówno w js jak i flash.

0

No jak skacze do innego linku to dziala (v 9). Z zamknieciem nie (i bardzo dobrze) bo jak ktos chce zamknac to nie chce by sie cos jeszcze ladowalo !

Opera moze troche dziwna (czasami trzeba bylo dodac pustego write w wer 7 dla location href) ale generalnie nie pozwala sie pakowac g...om. Niestety tym czasami utrudnia zycie :(

0

wcale nie tak bardzo dobrze, bo jak widzisz chcę wysłać statystyki raz, zamiast nękać użytkownika i serwer stukaniem co kilka sekund. poza tym co za kłopot zabezpieczyć przeglądarkę przed dostępem przekierowania strony w onclose? w ie i ff nie jest to jak widać problemem. w dodatku jak sam napisałeś Opera stoi w rozkroku - "trochę" zabezpiecza, tj. czasem onclose wywołuje.

a dziś znalazłem jeszcze jeden problem: wysłanie statystyk polega na requeście pod określony url z danym query stringiem. gemius robi takie rzeczy przez new Image() i src = ..., ale to nie ma 100% (!) skuteczności. o dziwo z IE działa jak natura chciała, pod FF stroi fochy (około 93% dociera), a pod Chrome i Safari (nie wspominając o Operze) nie działa wcale. ktoś ma inny pomysł, poza XmlHttpRequest, którego spróbuję jutro? iframe zamiast image nie daje rady, ba! document.createElement('image') zamiast new Image() też nic nie wysyła.
pierwsze pytanie - jak poradzić sobie w ogóle z oprogramowaniem zamknięcia przeglądarki, w szczególności z Operą - jest nadal otwarte, drugi problem je jeszcze komplikuje...

0

Cha dlatego nie znosze pracy z kodem, ktory ma byc wykonany w przegladarkach ...

Wracajac do opery i on unload, dziala to z linkow. Oznacza to, ze user klikajac link wyloguj moze wlasnie spowodowac zamkniecie strony. Ten guzik (X) dla mnie to jest taki terminate process dla strony www.

0

taak, tylko że wpisanie innego adresu do paska adresu też nie wywoła unload.
to nad czym pracuję, to poważny projekt, więc rozwiązania muszą być poważne; każde stracone stuknięcie to stracone pieniądze.

0

To zostaje albo przywiazanie do jednej przegladarki (czesto stosowany sposob, bardzo wiele wywala np. opere -> amazon i podglad ksiazek, osf.opi.org.pl, zagraniczne firmy tel. do odbierania MMS'ow wywalaja wszystko co nie obsluguje ActiveX - czyli zostaje IE).

W twoim przypadku chyba bedzie najlepiej jak zalozysz ze przegladarki tego nie potrafia (ewentualnie warunki + to ze nowsze wersje ktore nie istnieja jeszcze nie beda tego potrafily). Tak zostaje wysylanie co jakis czas info o tym i tu byly by cudem nowe protokoly 5 i ostatnio poznany przeze mnie bayeux aby nie tracic na naglowkach (no ale jak zwykle +/-).

No jeszcze aplety Java ale to tez problematyczne.

Mozna by tez trzymac ciastko i aktualizowac timerem przy nastepnym wejsciu na strone (o ile zrozumialem chodzi o zapisanie pozycji odtwarzanego filmu na www)

0

odtwarzacz jest umieszczany na stronach klientów, gdziekolwiek. z odtwarzacza korzysta ktokolwiek, dowolna przeglądarka, dowolny system operacyjny, aby tylko Flasha obsługiwało. coś jak odtwarzacz youtube. dużo filmów, dużo stron, dużo użytkowników (w tym unikalnych, więc ciastko nie zawsze pomoże).

1 użytkowników online, w tym zalogowanych: 0, gości: 1