首页 文章

如何检测窗口(新标签)关闭事件?

提问于
浏览
2

我有一个父页面和子页面 . 子页面在新选项卡中打开

我想关闭子选项卡时显示一条警告消息(子页面正在关闭) , .
关闭标签时如何显示关闭的杂物? (不刷新时间)

我使用了 onunloadonbeforeunload .
当页面刷新和制表符关闭时,也会调用两种方法 .

window.onunload = function doUnload(e)
{
  alert('Child window is closing...'); 
}

window.onbeforeunload = function doUnload(e)
{
  alert('Child window is closing...'); 
}

我必须在浏览器中显示警报消息,仅显示 close the tab .

帮我 . 提前致谢 .

Update

我使用以下脚本 . 它在IE中工作 . 但是没有在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>

如何在FireFox和其他浏览器中实现这一点 .

4 回答

  • 0

    afaik从来就不是一个跨浏览器脚本 . 解决方案是不依赖于特定浏览器的未记录和可更改的功能来检测重要的内容 .

    由于您有一个CHILD页面,您可以在父(开场)中设置一个测试,该测试每隔一段时间测试一次childWindowHandle.closed属性并对其进行操作 .

  • 0

    来自http://chrismckee.co.uk/good-sir-before-you-unload-crossbrowser-javascript-headaches/的脚本是否有效?

    假设你刚尝试在卸载事件crossbrowser之前触发,这几乎就是它(不包括歌剧)

    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;
    
  • 1

    Mozilla有一个例子Devloper site基本上说检查浏览器类型并相应地使用下面的检查 . 希望这有帮助 .

  • 1

    您可能无法做到这一点,除了一些基于cookie的方法,这些方法是非持久性cookie的开发工作 . 第二个标识页面刷新,基于表单的重定向,或返回重定向或浏览器关闭卸载事件标识不是直接的,并且是乏味的 . 建议不要依赖它 .

    在客户关闭标签之前,您可以做一些小事 . javascript detect browser close tab/close browser但是如果您的操作列表很大并且标签在完成之前关闭,那么您将无能为力 . 你可以尝试一下,但根据我的经验,不要依赖它 . 是的,此时您无法区分回来并刷新和关闭 . 因此没有万无一失的方式来说明孩子是否已经绝对关闭 .

    window.addEventListener("beforeunload", function (e) {
      var confirmationMessage = "\o/";
      /* Do you small action code here */
      (e || window.event).returnValue = confirmationMessage; //Gecko + IE
      return confirmationMessage;                            //Webkit, Safari, Chrome
    });
    

    https://developer.mozilla.org/en-US/docs/Web/Reference/Events/beforeunload?redirectlocale=en-US&redirectslug=DOM/Mozilla_event_reference/beforeunload

相关问题