之前的奇怪

dan*_*dan 6 javascript jquery google-chrome internet-explorer-7

问题

用$(window).bind("beforeunload", ...[snip]问,如果一个用户希望离开页面产生在一些浏览器的一些奇怪的结果.弹出对话框,询问您是希望留在页面上还是离开页面.如果您点击页面上的停留选项,Google Chrome(最新版本 - 13.0.782.215米)和WinIE7会弹出"后退"按钮中的最后一个历史记录页面.

为了说明这一点,当前会话历史记录包括访问以下页面:

  • 第3页
  • 第2页
  • 第1页

你决定离开第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?";
    }
});
Run Code Online (Sandbox Code Playgroud)

dan*_*dan 1

Chromium 于 2012 年解决了该问题:您可以在此处查看详细信息: https: //code.google.com/p/chromium/issues/detail ?id=93858