RameshVel
RameshVel

Reputation: 65887

Handle Browser close in JavaScript?

Is there a way to trap the browser closing event from JavaScript? I don't want to do this in Page Unload event or anything. It must be handled on clicking the browser close button.

Is it possible?

Upvotes: 5

Views: 19801

Answers (5)

Kishankumar Vasoya
Kishankumar Vasoya

Reputation: 936

you can not call alert or any interface(like open modal dialog or something!) while closing, but you do something in background for sure with this function

window.onunload = function()
        {
            if ((window.event.clientX < 0) || (window.event.clientY<0)) // close button
            {
                //do something on closing event
            }
            else if (window.event.altKey == true) // ALT + F4
            {
                //do something on closing event
            }
            else // for all other unload events
            {
                //do something on closing event
            }
        }

Upvotes: 0

mkavici
mkavici

Reputation: 317

onbeforeunload event captures every unload event but there is some trick way to handle if user closing browser by clicking close button, here is a sample code

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>

  <script>
  $(document).ready(function(){

    //handle if your mouse is over the document body,
    //if not your mouse is outside the document and if you click close button return message or do what you want

    var out = false;
    $("body").mouseover(function(){
      out=false;
    }).mouseout(function(){
      out=true;
    });


    $(window).bind('beforeunload', function(e){
    if(out)
        {return "Do you really want to leave this page now?"}
    });

  });
  </script>

</head>
<body>
  <p>   
    <a href="http://cssbased.com">go outside</a>
    <br>
    <a href="test.html">reload page</a>
    <span> </span>
  </p>
</body>
</html>

Upvotes: 4

Marselus Chia
Marselus Chia

Reputation: 230

Here is nice article about this from 4guysfromrolla

    <script language="JavaScript">
        window.onbeforeunload = confirmExit;
        function confirmExit()
        {
            return message to display in dialog box;
        }
    </script>

Upvotes: 3

EFraim
EFraim

Reputation: 13058

Not really. Page unload event is all you have. And even that not always. It would provide the ability to interfere with user's wishes pretty bad.

Upvotes: 0

Ionuț Staicu
Ionuț Staicu

Reputation: 22204

No. You only have onbeforeunload event, available as raw javascript (jquery doesn't include this event).

If you want to try it, try to post here an answer and, without pressing "post your answer" try to close the browser window.

This is the closest way to access the "close window" event.

Upvotes: 13

Related Questions