问题
使用$(window).bind("beforeunload", ...[snip]
询问用户是否希望离开页面会在某些浏览器中产生一些奇怪的结果。弹出对话框,询问您是希望留在页面上还是离开页面。如果您点击页面上的停留选项,谷歌浏览器(最新 - 13.0.782.215米)和WinIE7会弹出“后退”按钮中的最后一个历史页面。
为了说明这一点,当前的会话历史记录包括访问以下页面:
您决定离开第3页并发生beforeunload
事件。您选择留在当前页面。
再次单击后退按钮,这次决定离开页面。你应该发现自己处于第2页,而不是你在第1页。你可以再次前进到第2页。
问题
当我们选择“保持当前页面”选项时,如何阻止浏览器从后退按钮中删除这些页面?有可能吗?
问题示例
使用谷歌浏览器,在新窗口中,前往http://stackoverflow.com并浏览几个问题,而无需返回。然后点击Ask Question按钮。开始在对话框中输入内容。在浏览器中按返回。选择留在页面上。再次按回浏览器,这次选择“离开页面”选项。你现在已经回到了历史的两页。如果您多次点击停留在页面上,您基本上可以返回多个页面。
为什么这很重要?!
我不想混淆我的用户。他们不是精通计算机的类型。
我的代码(不是相关的)
$(window).bind("beforeunload", function(){
if (in_edit > 0){
return "You are currently editing this job.\n\nAre you sure you wish to exit the page?";
}
});
答案 0 :(得分:1)
Chromium在2012年解决了这个问题: 您可以在此处查看详细信息: https://code.google.com/p/chromium/issues/detail?id=93858
答案 1 :(得分:0)
您可以尝试在页面中包含隐藏的iframe,然后在onbeforeunload函数中更改该iframe上的src。 这可能包括历史记录中可能从历史堆栈中删除的另一个URL,而不是您当前所在的页面。
所以历史看起来像这样:
Page3
Page2
Page1
onbeforeunload更改了iframe:
Dummy
Page3
Page2
Page1
但这只是猜测可能有效,你需要尝试这个......