2015-04-22 63 views
1

似乎这个问题已被问到相当数量,但从未解决。防止“确认导航”对话框从页面上弹出

我想阻止此对话框(附加图片)在离开页面时出现。每次我在这个页面上的表单中更改某些内容时,都会发出警报,但表单是异步保存的,所以没有变化实际上是“脏”的。

Confirm Navigation dialog box

我试过在计算器和其他网站发现一对夫妇的事情,比如下面:

window.onbeforeunload = null; 

window.onbeforeunload = function(e) { 
    e.returnValue = ''; 
    return false; 
} 

window.onbeforeunload = function(e) { 
    history.go(0); 
} 

如何删除这个有些意见,将不胜感激。

编辑:按照要求,这是我正在尝试的代码示例。文件中还有其他代码,但与它无关。

;(function($) { 
    // doc ready 
    $(function(){ 
     // Remove the alert 
     window.onbeforeunload = null; 
    }); 
})(jQuery); 
+0

你的实际代码是什么? –

+0

我有一个关于我的'window.onbeforeunload'赋值的document.ready监听器。这是关于这个问题的唯一移动部分。如果您觉得有必要,我会将其添加到问题中。 –

回答

0

我为此创建了一个工作解决方案。

如上所述,我的表单异步保存,所以“您可能会失去更改”警报并不总是准确的。

现在任何链接点击都不再显示对话框。但是,这不检查关闭标签/浏览器。

;(function($){ 
    var dontSubmit = false, 
     $form = $('form#my-form'); 

    // Prevent the trigger a false submission on link click 
    window.addEventListener("beforeunload", function (e) { 
     dontSubmit = true; 
     $form.trigger('submit'); 
    }); 

    $form.on('submit', function(event){ 
     if (dontSubmit) { 
      event.preventDefault(); 
      return; 
     } 

     // Continue on as normal 
    }); 
})(jQuery); 
相关问题