Boîte de dialog de l’interface utilisateur jQuery OnBeforeUnload

J’ai un petit problème. J’essaie d’attraper l’événement OnUnLoad de la fenêtre et de poser une question de confirmation. Si l’utilisateur décide de ne rien faire, s’il veut quitter la page, il perdra toutes les données non enregistrées. Voici les problèmes …

J’utilise une boîte de dialog d’interface utilisateur jQuery et lorsque je mets le code suivant sur ma page, la boîte de dialog est ouverte et lorsque je clique sur le bouton Retour du navigateur, la boîte aux lettres ne s’affiche jamais. Il ne fait que rafraîchir la page:

 $(window).bind('beforeunload', function() { alert('you are an idiot!'); } );  

Et la solution que j’utilise était un post ici . Encore une fois, le msgbox affichera bien si je n’ai pas la boîte de dialog de l’interface utilisateur jQuery ouverte. Si je le fais, il n’affiche pas le msgbox et rafraîchit simplement la page.

Des idées?

    La manière correcte d’afficher l’alerte consiste à renvoyer simplement une chaîne. N’appelez pas la méthode alert() vous-même.

      

    Voir aussi: https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload

    Vous pouvez également faire une exception pour quitter la page en soumettant un formulaire particulier:

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

    cela fonctionne pour moi

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

    L’API jQuery dit spécifiquement de ne pas se lier à beforeunload, et devrait plutôt se lier directement à window.onbeforeunload, j’ai juste couru sur une assez mauvaise mémoire en partie due à la liaison avec beQuery avec jQuery.

    Cela fonctionne pour moi:

     window.addEventListener("beforeunload", function(event) { event.returnValue = "You may have unsaved Data"; }); 

    Pour ASP.NET MVC si vous souhaitez faire une exception pour quitter la page en soumettant un formulaire particulier:

    Définir un identifiant de formulaire:

     @using (Html.BeginForm("Create", "MgtJob", FormMethod.Post, new { id = "createjob" })) { // Your code }