【问题标题】:How to capture browser close event?如何捕获浏览器关闭事件?
【发布时间】:2011-10-01 03:15:59
【问题描述】:

我想在我的应用程序中捕获浏览器关闭事件并向用户显示一个确认框。 我正在使用 JSF 2.0 和 Richfaces 4.0。

【问题讨论】:

    标签: javascript jquery events browser


    【解决方案1】:

    将处理程序附加到unload 事件。

    【讨论】:

    • 我尝试了 onbeforeunload 事件。但问题是当我刷新页面或进行任何表单提交时,它也会调用 onbeforeunload 事件。
    • 没有办法区分它们;浏览器只能告诉你当前文档即将被替换。这不会让你知道为什么
    【解决方案2】:

    onbeforeunload

    < body onbeforeunload="alert('Closing');">
    

    示例:

    <html> 
    <head>
    <title>`onbeforeunload` Event Demo</title>
    </head>
    <body onbeforeunload="return 'Are you sure you want to exit ?';">
    </body> 
    </html> 
    

    【讨论】:

    • beforeunload 事件旨在返回 stringDocs.
    • @Alex 感谢您提供的信息。 OP 只想要一个函数调用
    【解决方案3】:

    使用beforeunload 事件。

    window.onbeforeunload = function(event) {
    
        event = event || window.event;
    
        var confirmClose = 'Are you sure?';
    
        // For IE and Firefox prior to version 4
        if (event) {
           event.returnValue = confirmClose;
        }
    
        // For Safari
        return confirmClose;
    
    }
    

    请记住,除了关闭窗口之外的其他事件(例如重新加载和表单提交)也会触发此事件。

    【讨论】:

    • Alt-F4也一样,关闭导航器(tab或者X)也关闭F5键,回发再重新加载?
    【解决方案4】:
    window.onbeforeunload = function () 
    {
      var shallIAlertUser = Do_Whatever(); //get boolen value
      if (shallIAlertUser) {
        //this will alert user
        return 'Are you sure?';
      }
      else {
        //this wont
        window.onbeforeunload = undefined;
      }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多