admin管理员组

文章数量:1203387

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?

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?

Share Improve this question edited Jun 23, 2011 at 14:12 Bill the Lizard 406k211 gold badges572 silver badges889 bronze badges asked Jul 17, 2009 at 13:15 RameshVelRameshVel 65.9k32 gold badges172 silver badges213 bronze badges
Add a comment  | 

5 Answers 5

Reset to default 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.

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>

Here is nice article about this from 4guysfromrolla

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

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.

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

本文标签: Handle Browser close in JavaScriptStack Overflow