17
votes

Does anyone know any way that I can use javascript to check when the browser window is close and pop-up a confirmation dailog to ask whether the user is confirm to exit the browser or change his mind to stay?

5
By browser window do you mean the page window or the entire browser?Joe Phillips
possible duplicate of Browser window close eventDanubian Sailor

5 Answers

25
votes
window.onbeforeunload = function (e) {
  var e = e || window.event;

  //IE & Firefox
  if (e) {
    e.returnValue = 'Are you sure?';
  }

  // For Safari
  return 'Are you sure?';
};

https://developer.mozilla.org/en/DOM/window.onbeforeunload

2
votes

The documentation here encourages listening to the onbeforeunload event and/or adding an event listener on window.

window.addEventListener('beforeunload', function(e) {}, false);

You can also just populate the .onunload or .onbeforeunload properties of window with a function or a function reference.

Though behaviour is not standardized across browsers, the function may return a value that the browser will display when confirming whether to leave the page.

1
votes

If the browser remains running after the page is closed, and if the browser processes the "onbeforeunload" event of the body element (sometimes it's disabled), and if the browser allows popup windows or mesage boxes and the ability to return false from that event to prevent the page change, then it's possible.

For an example, start typing a comment on any stackoverflow page with Javascript enabled and then navigate away from that page.

1
votes

This worked for me:

function closeWin(){
 var exit = confirm("Do you want to leave this window?");  
     if(exit==true){
        //do something before closing;
     }
}    

body onbeforeunload="closeWin()" 
1
votes

This works too, unless for IE8

$(window).bind('beforeunload', function (e) {
        // code to execute when browser is closed
        e.$.post("func.php", { action: 'action', id_userMsg: '<?php echo $id_user; ?>' });      

    });