OStack程序员社区-中国程序员成长平台

标题: javascript - ios javascript 页面隐藏和卸载无法正常工作 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 04:02
标题: javascript - ios javascript 页面隐藏和卸载无法正常工作

当用户在 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);



Best Answer-推荐答案


我的猜测是 unload 触发太晚而无法弹出消息。您有时可以通过使用 beforeunload 来解决这个问题,但它并未在 iOS Safari 中实现。 或许您可以通过在 unload 上向服务器发送 AJAX 请求来做一些棘手的事情(参见:How to detect unsaved data in form when user leaves the page?)。

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

关于javascript - ios javascript 页面隐藏和卸载无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27530440/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4