Search code examples
javascriptjqueryonbeforeunload

Using onbeforeunload without dialog?


I'm trying to post data when a user leaves my page. I have finally managed to find a working solution, however, it shows a confirmation dialog when the user leaves. I have tried return null; but it didn't work. Is it possible to disable the dialog?

window.onbeforeunload = function() {
    $.post("track.php", {
        async: false,
        refid: refid,
        country: country, 
        type: type,
    });

    return '';
}

Solution

  • From the Mozilla Developer Network page:

    When this event returns a non-void value, the user is prompted to confirm the page unload.

    This means the return value of the handler must be undefined (not '', false, or null) in order to avoid triggering the confirmation prompt.

    window.onbeforeunload = function() {
    
      $.post("track.php", {
      ...
      });
    
      return undefined;
    }
    

    In javascript you can skip the return value altogether to get the same result.

    In coffeescript with jquery it's something like

    $(document).ready ->
      $(window).bind('beforeunload', ->
        #put your cleanup code here
        undefined
      )