5

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?

5 Answers 5

13

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.

Sign up to request clarification or add additional context in comments.

2 Comments

Isn't "No" a little misleading answer?
No :) because the solution here is for browser tab close not for the whole browser close.
4

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>

Comments

3

Here is nice article about this from 4guysfromrolla

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

Comments

0

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.

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.