使用onbeforeunload时禁止确认对话框

时间:2014-12-17 03:44:42

标签: javascript jquery onbeforeunload

我正在使用onbeforeunload事件发送ajax请求来执行一些清理任务。

当我使用onbeforeunload时,它会在关闭选项卡时显示确认对话框。 我想要的不是显示任何确认对话框,只是发送清理请求。以下是我正在使用的脚本。

    window.onbeforeunload = unloadFunction;
    function unloadFunction() {
        var test_id = $('#test_id').val();

        jQuery.ajax({
            url: "/test/cleanup/" + test_id,
            cache: false
        }).done(function () {
            return false;
        });
        return false;
    }

有什么方法可以取消确认对话框吗?

根据一些建议,我尝试将return语句更改为return ;而不是return false;。但这也行不通。

2 个答案:

答案 0 :(得分:2)

根据我对原帖的评论,答案是通过在Ajax调用设置中添加async: false来使调用同步,将最后一个返回false更改为return null;,并删除done函数:

window.onbeforeunload = unloadFunction;
function unloadFunction() {
    var test_id = $('#test_id').val();

    jQuery.ajax({
        url: "/test/cleanup/" + test_id,
        cache: false,
        async: false
    });

    return null;
}

答案 1 :(得分:1)

当用户关闭页面时,文档已经死亡,脚本已经死了。您希望脚本在关闭后运行。现在,如果标签没有关闭,感觉就像是冻结等待你的功能完成。这意味着它是不可能的。我相信这就是你想要的?清理请求将不会发送,因为文档已关闭。