javascript - window.onbeforeunload 在页面刷新时执行,而不是在页面关闭时执行

标签 javascript onbeforeunload

我正在使用 window.onbeforeunload 在发生关闭事件时弹出确认对话框,但确认对话框出现在页面刷新时,不会在页面关闭时执行。

这是 JavaScript 代码:

<script language="JavaScript">
    window.onbeforeunload = confirmWinClose();
    function confirmWinClose() {
        var confirmClose = confirm('Close?');
        return confirmClose;
    }    
</script>

我在 Chrome、Firefox 和 Internet Explorer 上试过了。

最佳答案

您的代码有问题:

该函数将在您刷新时被调用,因为刷新时页面被卸载然后重新加载

在您的解决方案中,您还应该注意您没有将函数分配给window.onbeforeunload,而是分配函数的返回值 当你写的时候

window.onbeforeunload = confirmWinClose();

每当分配完成时,它也可能执行该函数(基于您将它放置在 javascript 中的位置)。例如

function confirmWinClose() {
var confirmClose = confirm('Close?');
return confirmClose;
}

window.onbeforeunload = confirmWinClose();

以上代码将在加载此 js 时执行 confirmWinClose 函数。

(不是你的情况,因为你在调用后定义了函数,所以不会在加载时执行,但你应该记住这一点)

解决方案:

下面的解决方案也适用于close

我试过这个而不是你的解决方案

JS:

window.onbeforeunload = function() {
    var confirmClose = confirm('Close?');
    return confirmClose;
}

 window.onbeforeunload = confirmWinClose; //note the absence of calling parantheses

    function confirmWinClose() {
        var confirmClose = confirm('Close?');
        return confirmClose;
    }

这按预期工作。

还请注意,您应该明确地从 onbeforeunloadreturn

即使你必须调用一个函数,你也应该这样做

<script>
    window.onbeforeunload = function(e) {
       callSomeFunction();
       return null;
    };
</script>

关于javascript - window.onbeforeunload 在页面刷新时执行,而不是在页面关闭时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740652/

相关文章:

javascript - 检查表单更改后无法单击输入

javascript - 防止 Gmail 关闭/保持可见

javascript - Node.js/socket.io "global"变量

javascript - 如何在SAPUI5中更改sap.m.Table的字体大小?

javascript - 映射循环内的条件语句

javascript - 如何运行 Backbone js 应用程序?

Chrome 更新后 JavaScript 无法正常工作

javascript,如何使用onbeforeunload查找已按下的按钮

javascript - 仅针对外部站点触发 onbeforeunload 确认警报

javascript - 在 json_encode 中传递 � 或 ü