60 votes

Javascript pour recevoir une alerte lors de la fermeture de la fenêtre du navigateur

J'ai essayé le code suivant pour obtenir une alerte lors de la fermeture d'une fenêtre de navigateur:

 <script language="JavaScript" type="text/javascript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "You have attempted to leave this page.  If you have made any changes to the fields without clicking the Save button, your changes will be lost.  Are you sure you want to exit this page?";
  }
</script>
 

Cela fonctionne, mais si la page contient un lien hypertexte, un clic sur ce lien hypertexte déclenche la même alerte. Je dois afficher l'alerte uniquement lorsque je ferme la fenêtre du navigateur et non lorsque je clique sur des hyperliens.

51voto

netadictos Points 4988

Vous trouverez une autre implémentation sur cette page Web à l’ adresse suivante : http://amazing-development.com/archives/2008/11/25/javascript-close-close-hook-for-browser-window/

 <html>
  <head>
    <script type="text/javascript">
      var hook = true;
      window.onbeforeunload = function() {
        if (hook) {
          return "Did you save your stuff?"
        }
      }
      function unhook() {
        hook=false;
      }
    </script>
  </head>
  <body>
    <!-- this will ask for confirmation: -->
    <a href="http://google.com">external link</a>

    <!-- this will go without asking: -->
    <a href="anotherPage.html" onClick="unhook()">internal link, un-hooked</a>
  </body>
</html>
 

Qu'est-ce que cela fait est que vous utilisez une variable comme un drapeau.

33voto

M. Utku ALTINKAYA Points 1549

conservez votre code et utilisez jquery pour gérer les liens.

 $(function () {
  $("a").click(function {
    window.onbeforeunload = null;
  });
});
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X