我正在使用 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;
}
这按预期工作。
还请注意,您应该明确地从 onbeforeunload
中return
。
即使你必须调用一个函数,你也应该这样做
<script>
window.onbeforeunload = function(e) {
callSomeFunction();
return null;
};
</script>
关于javascript - window.onbeforeunload 在页面刷新时执行,而不是在页面关闭时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740652/