How to detect the window(new tab) close event?

24,112

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;
Share:
24,112

Related videos on Youtube

Eswar
Author by

Eswar

Updated on December 11, 2020

Comments

  • Eswar
    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.

Related