【问题标题】:I want to call function on window unload我想在窗口卸载时调用函数
【发布时间】:2011-09-14 07:24:06
【问题描述】:

我正在尝试在窗口卸载事件中使用 window.confirm 显示确认框,

如果用户点击确认框上的确定按钮,那么我想调用一个函数,如果用户点击取消按钮,那么窗口应该关闭。

我的代码是:

<script>
        function confirmit(){
                var result=window.confirm("Are you sure?");
                if(result) {
                    // close all child windows
                } else{
                    // window should not get close
                }
            }
</script>
<body onunload='confirmit();' >

但问题是如果我点击取消按钮,窗口就会关闭。

请帮帮我。

谢谢

【问题讨论】:

    标签: javascript jquery html events javascript-events


    【解决方案1】:

    您无法通过阻止卸载来阻止页面卸载。您需要绑定到 onbeforeunload 代替。您应该只从事件处理程序中返回您想要显示给用户的字符串(请注意,在某些浏览器中可能不会显示该字符串)

    <script type="text/javascript">
        window.onbeforeunload = function(e){
            var msg = 'Are you sure?';
            e = e || window.event;
    
            if(e)
                e.returnValue = msg;
    
            return msg;
        }
    </script>
    

    More info here

    JSFiddle Example here

    【讨论】:

    • @PaulPro.. 你能否在 jsbin 上发布你的 jsfiddle 示例,Bcoz jsfiddle 在我的网络上被阻止?
    【解决方案2】:

    将您的代码更改为此代码以使其跨浏览器工作:

    <script>
      window.onbeforeunload = function (e) {
        e = e || window.event;
    
        // For IE and Firefox prior to version 4
        if (e) {
          e.returnValue = 'Do you really want to exit?';
        }
    
        // For Safari
        return 'Do you really want to exit?';
      };
    </script>
    <body>
    ...
    

    请注意,这是使用onbeforeunload-event (more information / view an example),其中返回值必须是应该向用户显示的消息。

    我不知道你是否有机会在确认之后做出反应以做某事(例如关闭子窗口),但我不这么认为。

    【讨论】:

    • @Oezi..当父窗口关闭时,是否可以自动关闭子窗口?
    • 如果您使用dependent-flag #re 打开带有window.open 的窗口,它们将自动关闭(请注意,并非所有浏览器都支持此功能):google.de/…跨度>
    猜你喜欢
    • 2014-05-30
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多