问题
使用 $(window).bind("beforeunload", ...[snip]
询问用户是否希望离开页面在某些浏览器中会产生一些奇怪的结果。弹出对话框并询问您是否希望留在页面上或离开页面。如果您单击留在页面上选项,Google Chrome(最新 - 13.0.782.215 m)和 WinIE7 会在“后退”按钮中弹出最后一个历史页面。
为了说明这一点,当前 session 历史包括访问以下页面:
- 第 3 页
- 第 2 页
- 第 1 页
您决定离开第 3 页,beforeunload
事件触发。您选择留在当前页面。
您再次单击后退按钮,这次决定离开该页面。您应该会发现自己位于第 2 页,但实际上您位于第 1 页。不过,您可以再次向前导航至第 2 页。
问题
当我们选择“停留在当前页面”选项时,如何防止浏览器从后退按钮中删除这些页面?可能吗?
问题示例
使用谷歌浏览器,在新窗口中,前往 http://stackoverflow.com并浏览几个问题而不返回。然后点击提问按钮。开始在对话框中输入。在浏览器中按返回。选择留在页面上。再次在浏览器中按返回键,这次选择离开页面选项。你现在已经回到了历史的两页。如果您多次点击停留在页面上,您基本上可以返回多个页面。
为什么这很重要?!
我不想让我的用户感到困惑。他们不是精通计算机的人。
我的代码(不相关)
$(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?";
}
});
最佳答案
Chromium 在 2012 年解决了这个问题: 您可以在此处查看详细信息: https://code.google.com/p/chromium/issues/detail?id=93858
关于javascript - 卸载之前的怪事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7156426/