当用户在 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-推荐答案 strong>
我的猜测是 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/
|