2013-04-23 11 views
5

Przeprosiny, jeśli jest to uproszczone; Jestem nowy w JQuery. Szukałem i znalazłem pytania takie jak this, ale nie odpowiadają one w pełni na moje pytanie.Wykonaj akcję na przycisku zatrzymania przeglądarki kliknij przycisk

używam jQuery pokazać niemego wskaźnik postępu dla działań, które mają długi czas:

$(document).ready(function() { 
    $('form').submit(function() { 
     $('#progress').show(); 
    }); 
}); 

Gdy użytkownik kliknie przycisk formularz, po prostu pokazać div z animowanym GIF. Ten element div jest widoczny przez resztę czasu, gdy strona jest widoczna. Po zakończeniu działania formularza zostanie załadowana nowa strona.

Działa to dobrze, ale co zrobić, jeśli użytkownik kliknie "zatrzymaj" w przeglądarce przed zakończeniem działania? Jak mogę sprawić, by div zniknął? Czy istnieje sposób, aby złapać to wydarzenie, czy istnieje lepszy sposób radzenia sobie z całą sytuacją?

Dzięki za pomoc.

+0

Jest mało prawdopodobne, można zrobić to wydarzenie. Ale lepszym sposobem byłoby przesłanie danych formularza za pomocą AJAX. Być może [sprawdź to] (http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form) – musefan

+0

Istnieje zdarzenie "onstop", nie jest ono obsługiwane przez wiele przeglądarek i nie jest niezawodne. – Xotic750

+0

Czy możesz po prostu wybrać div i go usunąć? Coś jak: '$ ('# progress'). Remove()' usuwa to z DOM. Nie zatrzyma to, co się dzieje. Takie działanie wymagałoby innych działań w zależności od tego, jak prowadzisz akcję. – ckersch

Odpowiedz

0

Możesz użyć zdarzenia "onstop", aby obsłużyć to zdarzenie, ale będzie działać tylko w IE. Myślę, że nie poradzisz sobie z takim wydarzeniem w innych przeglądarkach.

Co można spróbować to zrobić okno dialogowe postępu zniknie po małym timeout:

$('form').submit(function() { 
    $('#progress').show(); 
    setTimeout(function(){ 
      $('#progress').hide(); 
    },3000); 
}); 
+0

Tak, doszedłem do wniosku, że nie jest to możliwe. Jednak sprawienie, że zniknie po timeoutie, naprawdę nie pomoże. Sprawia to, że jest jeszcze bardziej zagmatwany: okno dialogowe zniknie, zanim zadanie zostanie wykonane (co spowoduje, że użytkownik pomyśli, że się nie udało); lub może minąć trochę czasu, zanim znikną, gdy klikną, zatrzymaj się (sprawiając, że użytkownik myśli, że nadal działa); lub oba. –

Powiązane problemy