How to detect the window(new tab) close event?
Solution 1
There is afaik never been a cross browser script for this. The solution is to NOT rely on undocumented and changeable features of a specific browser to detect something that is important.
Since you have a CHILD page, you can set up a test in the parent (opener) that at intervals test the childWindowHandle.closed property and acts on that.
Solution 2
Does the script from http://chrismckee.co.uk/good-sir-before-you-unload-crossbrowser-javascript-headaches/ work?
Assuming your just trying to fire beforeunload event crossbrowser, this pretty much does it ( excluding opera )
try{
// http://www.opera.com/support/kb/view/827/
opera.setOverrideHistoryNavigationMode('compatible');
history.navigationMode = 'compatible';
}catch(e){}
//Our Where The F' Are You Going Message
function ReturnMessage()
{
return "WTF!!!";
}
//UnBind Function
function UnBindWindow()
{
window.onbeforeunload = null;
return true;
}
//Bind Links we dont want to affect
document.getElementById('homebtn').onclick = UnBindWindow;
document.getElementById('googlebtn').onclick = UnBindWindow;
//Bind Exit Message Dialogue
window.onbeforeunload = ReturnMessage;
Related videos on Youtube
Eswar
Updated on December 11, 2020Comments
-
Eswar over 3 years
I have one parent page and child page. the child page opened in new tab
I want to show one alert message (The child page is closing), when i close the child tab.
How to show the closing messgae, when close the tab? (Not refreshing time)I used onunload, and onbeforeunload.
Two methods are also called, when the page refresh and tab closing.window.onunload = function doUnload(e) { alert('Child window is closing...'); }
and
window.onbeforeunload = function doUnload(e) { alert('Child window is closing...'); }
I must show the alert message, only close the tab in browser.
Help me. Thanks in advance.
Update
I use the following script. Its worked In IE. But not worked in FireFox
<script language="javascript" type="text/javascript"> window.onbeforeunload = function() { if ((window.event.clientX < 0) || (window.event.clientY < 0) || (window.event.clientX < -80)) { alert("Child window is closing..."); } }; </script>
How to acheive this in FireFox and other Browser.