javascript - 卸载之前的怪事

标签 javascript jquery google-chrome internet-explorer-7

问题

使用 $(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/

相关文章:

内联 CSS 移动后 jQuery 不工作

javascript - jQuery Flot 折线图,x 轴为月份、年份

html - React 不会关闭自动完成功能

javascript - 加载资源失败:net::ERR_CONTENT_LENGTH_MISMATCH

javascript - 按不在特定符号之间的符号拆分字符串

javascript - Extjs 创建一个没有列表的标签字段

javascript - 更短的嵌套 if 语句?

css - webkit "haslayout"漏洞

javascript - jquery promise 在解析之前可以被垃圾收集吗?

javascript - 哪种方法选择正文元素更快?