我想在窗口卸载时调用函数

时间:2011-09-14 07:24:07

标签: javascript jquery html events javascript-events

我正在尝试使用window.confirm在窗口卸载事件

上显示确认框

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

我的代码是:

<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();' >

但问题是如果我点击取消按钮,窗口就会越来越近。

请帮帮我。

由于

2 个答案:

答案 0 :(得分:5)

您无法阻止卸载停止页面卸载。你需要绑定到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

答案 1 :(得分: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-eventmore information / view an example),其中返回值必须是应向用户显示的消息。

我不知道你是否有机会对确认后的事情作出反应(例如关闭子窗口),但我不这么认为。