防止"确认导航"弹出页面上的对话框离开

时间:2015-04-22 21:54:55

标签: javascript

似乎这个问题被问了很多,但从未解决过。

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

Confirm Navigation dialog box

我已尝试在stackoverflow和其他网站上找到一些内容,例如:

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);

1 个答案:

答案 0 :(得分: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);