web-dev-qa-db-fra.com

$ (fenêtre) .unload ne se déclenche pas

Je veux exécuter une méthode d'action lorsque l'utilisateur abandonne une page particulière à l'aide de jQuery.

La page a le code suivant:

    <script type="text/javascript">

        $(window).unload(function () {
            alert("Handler for .unload() was called.");
        });

    </script>

Lorsque je quitte la page, je ne vois jamais l'alerte attendue.

16
Sergio Romero

En fait, certains navigateurs tels que Google Chrome peut se bloquer si vous essayez de alert dans une fenêtre unload. En tant qu'utilisateur, j'aime cette fonctionnalité. Alerte chaque fois que vous essayez s'éloigner d'une page est nul:

enter image description here

Remplacez l'alerte par un console.log ou autre chose moins intrusif pour l'utilisateur et l'événement sera heureusement appelé.

Vous pourriez également vouloir extraire l'événement onbeforeunload .

30
Darin Dimitrov

jquery .on ('décharger', ..); n'était pas fiable pour moi. j'ai basculé pour utiliser beforeunload. assurez-vous simplement que vous ne renvoyez rien, ou l'utilisateur obtiendra un "êtes-vous sûr de quitter la page" -popup.

<script type='text/javascript'>
    $(window).on('beforeunload', function(){
         console.log("beforeUnload event!");
     });
</script>
13
bhelm

comme l'a dit bhelm avant le déchargement fonctionne aussi pour moi.
return false sur cet événement invoquera la valeur par défaut du navigateur

êtes-vous sûr de vouloir quitter cette page?


$(window).on('beforeunload', function ()
    {
        return false;
    });
6
Benny Margalit

si vous voulez alerter l'utilisateur que vous quittez cette page, alors si cela

/* $(window).unload(function()
{
        //alert("you leaving this page");
        console.log("you leaving this page");
}); */

la fonction ne fonctionne pas pour vous, puis remplacez votre code par on ("beforeunload", fonction) comme ceci

$(window).on("beforeunload", function()
{
        alert("you leaving this page");
        console.log("you leaving this page");
});

ce travail pour moi! vous pouvez voir la sortie dans le journal de la console vous quittez cette page

0
Mohsin Shoukat
window.onbeforeunload=navigationError;

var dont_confirm_leave = 0; var leave_message = 'You sure you want to leave?';

function navigationError(e) 
  {
    if(dont_confirm_leave!==1)
    {
      if(!e) e = window.event;
      //e.cancelBubble is supported by IE - this will kill the bubbling process.
      e.cancelBubble = true;
      e.returnValue = leave_message;
      //e.stopPropagation works in Firefox.
      if (e.stopPropagation) 
      {
        e.stopPropagation();
        e.preventDefault();
      }

      //return works for Chrome and Safari
      return leave_message;
    }
  }
0
Kshitiz