Chrome 中的 Ajax + pushState 错误

标签 ajax html google-chrome

我在 Chrome 19 中遇到了一个奇怪的错误。我实现了一个具有 pushState 支持的全 AJAX 网站(每个非外部链接都是通过 AJAX 请求打开的)。我通过 JSON 格式在 AJAX 中传输 HTML 片段。

当我通过外部链接离开我的网站然后返回时,Chrome 呈现该 URL 的缓存数据 - 问题是,他缓存 JSON 内容并显示它,而不是完整的网页。

这可以通过这些步骤重现(更新:从那时起我在我的网站上删除了 AJAX 功能,所以这个错误不再出现):

  1. 打开http://beta.mirtes.cz/
  2. 点击第二个日期链接(2012 年 6 月 16 日在“这一切都始于一封奇怪的电子邮件”旁边)。此页面(您现在位于 http://beta.mirtes.cz/it-all-began-with-a-strange-e-mail)是通过 AJAX 加载的。
  3. 点击“一切始于一封陌生的电子邮件”。您被重定向到外部网站。
  4. 页面完全加载后,点击 Chrome 中的“返回”。

我尝试使用 Cache-Control: no-cache 发送所有 AJAX 响应,但没有效果。

Firefox 12 运行正常。

最佳答案

我想出了一个变通方法 - 我使用额外的虚拟 GET 参数执行 AJAX 请求 - ?ajax=1。这样浏览器就可以识别通常的 HTML 内容和 JSON 之间的区别。它对用户没有任何影响,该参数仅在 Firebug 中可见。

关于Chrome 中的 Ajax + pushState 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059154/

相关文章:

javascript - 如何在选中指向网站页面的链接后制作 2 个下拉选项

javascript - 从弹出窗口中执行当前选项卡中的脚本

Javascript在setInterval中添加参数

c# - 拦截来自 UpdatePanel 帖子的重定向

c# - 没有为类型定义无参数构造函数.. Ajax JQuery 调用时出错

java - AWS Lambda 的 Chrome 二进制文件

javascript - 检测 Chrome NaCl 是否可用

jquery - django 表单和 ajax

javascript - 根据id从文本输入中获取 boolean 值

python - 从页面上的相对 url 重构绝对 url