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.