jQuery UI对话框OnBeforeUnload

我有一个小问题。 我试图捕捉窗口的OnUnLoad事件,并询问一个确认问题,如果用户决定他们想留下来,那么他们将会丢失所有未保存的数据。 这是问题…

我正在使用一个jQuery UI对话框,当我把下面的代码放在我的页面上时,我打开了对话框,当我点击浏览器上的后退button时,它永远不会popupmsgbox。 它只是刷新页面:

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

我正在使用的解决scheme是一个post在这里 。 同样,如果我没有打开jQuery UI对话框,msgbox将显示正常。 如果我这样做,那么它不会显示msgbox,只是刷新页面。

有任何想法吗?

显示警报的正确方法是简单地返回一个string。 不要自己调用alert()方法。

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

另见: https : //developer.mozilla.org/en-US/docs/Web/Events/beforeunload

您也可以通过提交特定的表单来离开页面。

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

这对我有用

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

jQuery API专门说不绑定到beforeunload,而是应该直接绑定到window.onbeforeunload,我只是碰到了一个非常糟糕的内存,部分原因是绑定到jQuery之前加载。

这适用于我:

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

对于ASP.NET MVC如果你想通过提交一个特定的表单来离开页面的例外:

设置一个表单ID:

 @using (Html.BeginForm("Create", "MgtJob", FormMethod.Post, new { id = "createjob" })) { // Your code } <script type="text/javascript"> // Without submit form $(window).bind('beforeunload', function () { if ($('input').val() !== '') { return "It looks like you have input you haven't submitted." } }); // this will call before submit; and it will unbind beforeunload $(function () { $("#createjob").submit(function (event) { $(window).unbind("beforeunload"); }); }); </script>