javascript - 防止页面离开时弹出 "Confirm Navigation"对话框

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

最佳答案

我为此创建了一个可行的解决方案。

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

现在,任何链接点击都不再出现该对话框。但是,这不会检查是否关闭选项卡/浏览器。

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

关于javascript - 防止页面离开时弹出 "Confirm Navigation"对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809614/

相关文章:

JavaScript 在 PHP 文件中不起作用(滚动时有框阴影)

javascript - 在React中播放状态相关的音频文件

javascript - 对话框未返回 true,因此由于事件发生而未触发 onClick

javascript - 如何检查要选中的复选框?

javascript - 如何过滤对象数组内部的数组?

Java 对象转 JSON,使用 javascript 解析

javascript - 开 Jest 期望之后的一切都没有被调用

javascript - jQuery GET 参数在服务器端始终为空

javascript - 重新绘制传单中的自定义标记

javascript - 全局导入与单个组件导入+ webpack : is there any difference in final (bundled/packed) size?