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

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

因此,我有两个回调函数,一个用于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。

祝好运!

10-06 15:38