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

时间:2018-03-03 08:59:07

标签: javascript html

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

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

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

在我的代码中,Windows始终要求确认(Chrome和Firefox)。将空值更改为未定义的内容并不会改变任何内容。

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

1 个答案:

答案 0 :(得分:1)

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

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

参考文献: beforeUnload eventnull primitiveempty statement