2013-05-23 17 views
18

Czy możesz podać mi najlepszy sposób na wykrycie tylko zdarzenia zamknięcia okna dla wszystkich przeglądarek przez jquery?Wykryj zdarzenie Zamykanie okien przez Jquery

Mam na myśli kliknięcie przycisku X w przeglądarce lub window.close(), nie oznacza F5, przesłanie formularza, window.location lub link. Szukałem wielu wątków, ale nie znalazłem właściwej drogi.

Dziękuję bardzo za wsparcie.

Odpowiedz

7

nie ma konkretnego zdarzenia do przechwytywania przeglądarki bliskie wydarzenie.

Można przechwytywać tylko po zwolnieniu bieżącej strony.

Ta metoda zostanie zastosowana podczas odświeżania/nawigacji na bieżącej stronie.

Nawet obliczenie pozycji X myszy zdarzenia nie daje dobrego wyniku.

33

Można użyć:

$(window).unload(function() { 
    //do something 
} 

Unload() jest przestarzałe w jQuery w wersji 1.8, więc jeśli używasz jQuery> 1.8 można użyć nawet beforeunload zamiast.

Zdarzenie beforeunload jest wywoływane za każdym razem, gdy użytkownik opuszcza twoją stronę z dowolnego powodu.

$(window).bind("beforeunload", function() { 
    return confirm("Do you really want to close?"); 
}) 

Źródło Browser window close event

Aby pobrać najnowsze wersje jQuery zalecane użycie .Na() zamiast .bind()

+0

Może również czytać http://stackoverflow.com/questions/1594548/dom-window-unload-event-is-it-reliable – thefrontender

+0

To nie działa dla mnie. Widziałem te rozwiązania wcześniej. –

+1

Przeczytaj tę odpowiedź na http: // stackoverflow.com/a/3888938/1827690 – mjimcua

9

Metoda unload() została uznana za przestarzałą w jQuery w wersji 1.8.

więc jeśli używasz wersje starsze niż 1.8

następnie użyć -

$(window).unload(function(){ 
alert("Goodbye!"); 
}); 

a jeśli używasz 1,8 i wyższą

następnie użyć -

window.onbeforeunload = function() { 
    return "Bye now!"; 
}; 

nadziei to zadziała :-)

+0

W Firefox niestandardowe wiadomości nie działa. –

3

Nie ma określonego zdarzenia do przechwytywania zdarzenia zamknięcia przeglądarki. Ale możemy wykryć pozycje przeglądarki XY.

<script type="text/javascript"> 
$(document).ready(function() { 
    $(document).mousemove(function(e) { 
    if(e.pageY <= 5) 
    { 
     //this condition would occur when the user brings their cursor on address bar 
     //do something here 
    } 
    }); 
}); 
</script> 
+0

Cześć! Zmodyfikowałem twój post, aby umieścić cały kod HTML w formacie kodu, ponieważ był niepoprawnie analizowany jako znaczniki HTML i nie był wyświetlany. W przyszłości zwróć uwagę na podgląd, który pokazuje, jak będzie wyglądać Twój post, ponieważ Twoja odpowiedź może wyglądać inaczej niż oczekiwałeś! – SuperBiasedMan

1

Połącz zdarzenie mouseMove i window.onbeforeunload: - użyłem do ustawionego limitu czasu dla tabeli Audytu.

$(document).ready(function() { 
var checkCloseX = 0; 
     $(document).mousemove(function (e) { 
      if (e.pageY <= 5) { 
       checkCloseX = 1; 
      } 
      else { checkCloseX = 0; } 
     }); 

     window.onbeforeunload = function (event) { 
      if (event) { 
       if (checkCloseX == 1) { 

        //alert('1111'); 
        $.ajax({ 
         type: "GET", 
         url: "Account/SetAuditHeaderTimeOut", 
         dataType: "json", 
         success: function (result) { 
          if (result != null) { 
          } 
         } 
        }); 
       } 
      } 
     }; 
    }); 
Powiązane problemy