Mam podstawowe internetową HTML (z niektórych javascript) za pomocą prostego znacznika zakotwiczenia, aby pobrać plik tak:OSX Safari rama nośna Interrupted
<a href="../resources/mexml/MexmlSamples-1.0.zip">Mexml Samples 1.0</a>
Aby śledzić liczbę pobrań, mam onclick
teleskopowa, która przechodzi zdarzenie do Google Analytics tak:
$('#mybutton').click(function(e){ga('send','event','Download','MexmlSample','MexmlSample-1.0');});
To działa zgodnie z oczekiwaniami podczas pobierania pliku za pomocą Chrome na OS X, Windows i IE 7. pobieranie plików i widzę zdarzenia w moim GA konto.
Kiedy testuję to w Safari 8 na Yosemite, plik pobiera, ale GA rzadko widzi to wydarzenie. I oczywiście budzę przerażenie Failed to load resource: Frame load interrupted
w konsoli błędów Safari.
Zakładam, że otrzymuję zdarzenie GA czasem ze względu na stan wyścigu między momentem, w którym Safari przerywa akcję i po uruchomieniu kodu GA.
Czy można zrobić wszystko, aby to naprawić w Safari, aby zawsze otrzymywać zdarzenia GA?
Zauważ, że prawdopodobnie moje pytanie ma tę samą przyczynę jak to bez odpowiedzi pytanie: Frame load interrupted when downloading excel files
Aktualizacja 06 czerwca
jestem teraz całkowicie zdezorientowany. Zauważyłem, że jeśli otworzę nową stronę przeglądarki w mojej witrynie (w Safari) i kliknę plik, to zostanie ono zarejestrowane przez GA. Jednak kolejne kliknięcia nadal pobierają plik, ale nie są rejestrowane przez GA.
Jeśli zamknę to okno i otworzę nowe, to pierwsze pobieranie zostanie zarejestrowane przez GA.
W przeciwieństwie do tego, gdy używasz Chrome, każde pobranie zostanie zarejestrowane przez GA.
Teraz myślę, że może szukam niewłaściwego problemu. Zachowanie, które widzę, mówi mi, że Safari utrzymuje stan w kodzie JavaScript, który umożliwia pierwsze wywołanie GA, ale blokuje wszystkie kolejne wywołania.
Ale ten sam kod jest uruchamiany przez Chrome, więc nie wiem, jak uruchomić debugowanie problemu.
Oczekiwanie na zakończenie zlecenia GA byłoby brzydkie dla użytkownika - wolę zachować obecną sytuację. Jeśli chodzi o atrybut "pobierz" HTML5, nie jest on obecnie obsługiwany przez Safari. –
Całkowicie zgadzam się z brzydotą. Również [tutaj] (http://stackoverflow.com/questions/2655387/safari-how-to-load-a-file-without-getting-safari-to-stop-the-current-ajax-reque) znalazłem interesujące skomentuj atrybut target = "_ blank" dla tagu < a >. Mam nadzieję, że to pomoże – Andrey
To jest dobry punkt o "celu". Spróbuję tego później. –