Reputation: 65887
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
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
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
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
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
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