前提条件:您应该使用 Safari 10 。
嗨,我很难得到离开|保持确认框以在不同浏览器上显示在我的页面上。
请转到https://www.biznessapps.com/cms,然后使用以下凭据登录:
username: pzheng64@gmail.com
password: skl@0!_~!(
登录后,转到/欢迎页面。请单击左侧边栏中的“设置”,然后转到“成员资格”选项卡。
如果您可以看到“启用会员功能”,则单击它并更改其中的任何内容并导航到另一个页面。您将在第一次尝试离开页面时看到确认框出现。
点击“离开”转到目标页面,然后返回此“设置”页面并尝试相同的操作;您将不会再次看到确认框(使用Safari时)。
我在https://www.biznessapps.com/cms/v2/public/scripts/pages/settings.js?v=68.160720
使用了此代码段/* settingsPages.isChanged() is my custom function */
window.addEventListener("beforeunload", function(event) {
if (settingsPage.isChanged()) {
event.returnValue = "some string";
return "some string";
}
});
它适用于Google Chrome和Firefox,但不适用于Safari。
谢谢!
答案 0 :(得分:2)
这可能是由于Safari的后向缓存造成的。关于此的一篇不错的文章可以在这里找到: https://team.goodeggs.com/you-forgot-about-bfcache-f7a9bdeceb6c#.qgri9etsb
修复程序基本上只是在从缓存加载页面时重新加载页面,如下所示:
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
event.persisted
是神奇的部分。如果使用浏览器“后退”或“前进”加载页面,则为true
。