suppress confirmation dialog while using onbeforeunload

主宰稳场 提交于 2019-12-30 09:04:29

问题


I am using onbeforeunload event to send ajax request to perform some clean up task.

When I am using onbeforeunload, it shows the confirmation dialog on closing the tab. What I want is not to show any confirmation dialog and just send the clean up request. Following is the script I am using.

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

Is there any way I can suppress the confirmation dialog?

As per some suggestions, I have tried to change return statement to return ; instead of return false; . But this is also not working.


回答1:


As per my comments on the original post, the answer is to make the call synchronous by adding async: false in the Ajax call settings, change the last return false to return null;, and remove the done function:

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

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

    return null;
}



回答2:


When the user closes the page the document is dead, the scripts are dead. You're expecting the script to run after they close. Now if the tab doesn't close it feels like it's frozen waiting for your function to finish. Meaning it's not possible. I believe that's what you want? The clean up request won't send because the document is closed.



来源:https://stackoverflow.com/questions/27517979/suppress-confirmation-dialog-while-using-onbeforeunload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!