gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:41:14 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com