Search code examples
javascriptjqueryonbeforeunload

suppress confirmation dialog while using onbeforeunload


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.


Solution

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