iOS JavaScript Pagehide and Unload 无法正常工作

ios javascript pagehide and unload doesn't work correctly

本文关键字:常工作 工作 Pagehide JavaScript and Unload iOS      更新时间:2023-09-26

我想在用户关闭ios上的选项卡或刷新页面时显示一个弹出窗口,以防止他丢失数据。我已经看到unload已被弃用,我必须使用pagehide事件,但似乎两者都不适用于 safari 甚至 chrome。

我的代码是:

window.addEventListener("pagehide", function (evt) {
    return confirm("Vous allez perdre toutes vos modifications");
}, false);

问题是即使我单击取消按钮也会刷新页面,并且如果我关闭选项卡,弹出窗口不会出现。

我也为Chrome移动版尝试了此代码(桌面工作正常),但两者都不适用于他的浏览器

window.addEventListener("beforeunload", function (e) {
    if (closeWindow) {
        var message = 'Toutes vos modifications seront perdues';
        if (typeof evt == 'undefined') {
            evt = window.event;
        }
        if (evt) {
            evt.returnValue = message;
        }
        return message;
    }
}, false);

我的猜测是unload触发为时已晚,无法弹出消息。您有时可以使用 beforeunload 来解决此问题,但它未在 iOS Safari 中实现。:(也许你可以做一些棘手的事情,在unload上向服务器发送AJAX请求(请参阅:当用户离开页面时如何检测表单中未保存的数据?)。

我不确定它会有所帮助,但您也可以考虑通过将用户的数据保存到localstorage或将其发送到您的服务器来自动将用户的数据保存在unload上。