onunload 无法与 Safari 中的 onbeforeunload 结合使用

onunload not working in combination with onbeforeunload in Safari

本文关键字:onbeforeunload 结合 中的 Safari onunload      更新时间:2023-09-26

我想确保用户在某些情况下关闭窗口时收到警告(例如,未保存的数据)。效果很好。

但是:我还需要在窗口关闭之前做一些清理工作,但在我询问用户是否真的要关闭它之后。

所以我有两个回调函数,一个用于将抛出确认对话框的onbeforeunload,另一个用于应该进行清理的onunload。

不幸的是,在 Safari 中,似乎没有调用 onunload 回调。

为什么?

$(window).on('beforeunload',function() {
    if (connected)
        return "Are you sure you want to close the window!";
});
$(window).on('unload',function() {
    localStorage.removeItem("someItem"); // never executed in Safari
});

遗憾的是,某些浏览器不支持此事件。您可以尝试使用 pagehide 事件而不是 onunload。

祝你好运!