为什么onbeforeunload总是显示一个对话框

问题描述 投票:1回答:2

如果有尚未写入的数据,我试图让我的javascript弹出一个对话框,但它总是显示确认对话框,即使没有任何要写的内容。

我已将问题减少到这个最小的失败案例:

window.addEventListener("beforeunload", (e) => {
    e.returnValue = null;
    return null;
});

在我的代码中,Windows始终要求确认(Chrome和Firefox)。将null更改为undefined不会改变任何内容。

有人可以借给我一些线索吗?

javascript html
2个回答
1
投票

如果event.returnValue设置为非空,则会显示确认对话框。并且undefinednull在Javascript中不是空的。如果我理解你要做什么,你应该使用条件,只有条件为真时才设置/返回一些东西。换一种说法:

window.addEventListener("beforeunload", (e) => {
    if (dataWaitingToBeSent) {
        e.returnValue = null;
        return null;
    }
});

参考文献:beforeUnload eventnull primitiveempty statement


1
投票

尝试使用return;以避免触发确认提示。

如果你返回'',null,false它可能会触发提示。

如果要禁用该对话框

window.addEventListener("beforeunload", (e) => {
    .....
return;
});

希望这可以帮助 ...!

关于jquery的工作小提琴:https://jsfiddle.net/KishorVelayutham/wfd2xsxk/10/

return ; will stop prompting the dialog.
© www.soinside.com 2019 - 2024. All rights reserved.