web-dev-qa-db-fra.com

Détecter l'événement Fermer les fenêtres par Jquery

Pourriez-vous s'il vous plaît me donner le meilleur moyen de détecter niquement événement de fermeture de fenêtre pour tous les navigateurs par jquery?

Je veux dire en cliquant sur le bouton X dans le navigateur ou window.close (), ne signifie pas F5, soumission de formulaire, window.location ou lien. Je cherchais de nombreux sujets mais je n'ai pas trouvé le bon chemin.

Merci beaucoup pour votre soutien.

21
Duc Le

Il n'y a aucun événement spécifique pour capturer l'événement de fermeture du navigateur.

Vous ne pouvez capturer qu'au déchargement de la page actuelle.

Par cette méthode, elle sera effectuée lors de l'actualisation/navigation dans la page actuelle.

Même le calcul de la position X Y de l'événement de la souris ne vous donne pas de bons résultats.

11
Naveenkumar K

Vous pouvez utiliser:

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

Unload () est déconseillé dans jQuery version 1.8, donc si vous utilisez jQuery> 1.8, vous pouvez utiliser même beforeunload à la place.

L'événement beforeunload se déclenche chaque fois que l'utilisateur quitte votre page pour une raison quelconque.

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

Source événement de fermeture de la fenêtre du navigateur

36
mjimcua

La méthode unload () était déconseillée dans jQuery version 1.8.

donc si vous utilisez des versions antérieures à 1.8

puis utilisez -

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

et si vous utilisez la version 1.8 et supérieure

puis utilisez -

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

j'espère que cela fonctionnera :-)

9
Rahul Vyas

Il n'y a aucun événement spécifique pour capturer l'événement de fermeture du navigateur. Mais nous pouvons détecter par les positions du navigateur 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>
6
user3559718

Combinez l'événement mousemove et window.onbeforeunload: - J'ai utilisé pour définir TimeOut pour la table d'audit.

 $(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) {
                            }
                        }
                    });
                }
            }
        };
  });
3
Harris Yer