64 votes

jQuery UI Dialog OnBeforeUnload

J'ai un petit problème. Je suis d'essayer d'attraper l'Événement OnUnLoad de la Fenêtre et de poser une question sur la confirmation et si l'utilisateur décide de rester alors tout va bien, et si ils veulent quitter la page, puis ils vont perdre toutes les données non sauvegardées. Voici les questions...

Je suis à l'aide de jQuery UI Dialog et quand j'ai mis le code suivant sur ma page, j'ai la boîte de Dialogue ouvrir, et quand je clique sur le bouton retour du navigateur, il ne s'ouvre le message. Il vient de rafraîchissement de la page:

<script type="text/javascript"> 
    $(window).bind('beforeunload', function() { 
            alert('you are an idiot!'); 
        } 
    );
</script>

Et la solution que j'utilise est un post ici. Encore une fois, la msgbox affiche bien si je n'ai pas le jQuery UI boîte de Dialogue ouvrir. Si je le fais, alors il n'affiche pas la boîte de message et juste actualiser la page.

Des idées?

111voto

Jordan Ryan Moore Points 4353

La manière correcte de l'affichage de l'alerte est de simplement retourner une chaîne de caractères. N'appelez pas l' alert() méthode vous-même.

<script type="text/javascript">
    $(window).bind('beforeunload', function() {
        if (iWantTo) {
            return 'you are an idiot!';
        }
    }); 
</script>

43voto

Tomáš Mleziva Points 399

Vous pouvez également faire une exception pour quitter la page via la soumission d'une forme particulière:

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

$("#form_id").submit(function(){
    $(window).unbind("beforeunload");
});

14voto

lndr Points 121

cela fonctionne pour moi

$(window).bind('beforeunload', function() {
      return 'Do you really want to leave?' ;
});

1voto

Thomas Points 77

jQuery API spécifiquement dit de ne pas le lier à beforeunload, et devrait plutôt se lier directement à la fenêtre.onbeforeunload, j'ai juste couru à travers un assez mauvais souvenir, en partie en raison de la liaison à beforeunload avec jQuery.

-1voto

user3151023 Points 1

utilisez ce code............

$(document).ready(function() {

     var displayMessage = true;

     $(window).bind('beforeunload', function(){
      //the custom message for page unload doesn't work on Firefox
      if(displayMessage){
       var message =  '-- You specify a custom message here ---' +
       '\n Thanks for visiting my site!';
       return message;
      }
     });

     $('*').hover(
      function(){displayMessage = false;},
      function(){displayMessage = true;}
        ); 

        $('#myButton').click(function() {
         window.location.href = "";
        })

        $('a[href^="javascript:"]').click(function(event) {
         event.preventDefault();
         window.location.href = "";
        });
    });     

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