ajax - HTML5 历史 : Problems with back button after full page load

标签 ajax html history back-button

<分区>

我构建了一个使用 AJAX 和 HTML5 历史记录的 Web 应用程序(具有针对旧浏览器的回退,history.js)。

我的应用程序只有一部分是通过后台 javascript 加载的(这部分很重,大部分时间都会用到)。其他页面可通过常规链接访问,加载这些页面时将重新加载整个页面。

当我稍微导航动态部分(URL 更改并适合显示的内容),通过常规链接离开它然后点击浏览器后退按钮时,发生了一些奇怪的事情:只有在最后一个 XHR 中加载的部分(在我的例子中,一个包含一些数据的 div)显示时没有布局和 CSS。当我查看源代码(在 Chromium 和 FF+Firebug 中)时,DOM 仅包含上述 div。

我希望浏览器缓存 DOM 和其他信息,这样它就能够重建之前的页面,或者它会重新加载最后一个 URL(该页面将按预期显示,因为如果它没有通过加载一个 XHR,它将在布局中呈现)。我尝试在对 XHR 的响应上设置缓存控制 header ,但没有帮助。

我整理了一个最小示例:http://moserei.de/html5_history/

感谢您的帮助!

最佳答案

这是名字的冲突:

原始页面有2个状态,占用2个URL:

  1. http://moserei.de/html5_history/
  2. http://moserei.de/html5_history/xhr.html

http://moserei.de/html5_history/xhr.html 的 XHR 请求与原始页面有不同的响应。现在这个 URL http://moserei.de/html5_history/xhr.html 与两件事相关联:

  1. 原始 URL 中的状态
  2. 通过XHR发送的分离内容

当浏览器需要从缓存中获取此 URL 时(当您单击后退按钮时),它应该做什么?这很难说。我不确定历史规范中是否有明确定义的规则,所以尽量避免这种情况。

关于ajax - HTML5 历史 : Problems with back button after full page load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7394691/

相关文章:

jquery - $.jquery ajax返回的数据(json)显示为 'undefined'

javascript - 代码在 Safari 和响应式浏览器中无法正常工作

Hibernate,保存对象之前的状态

jQuery 动态数据表重新加载

javascript - 从 ajax 调用访问嵌套的 json 数据

javascript - 需要一些编辑(onload 事件)弹出窗口

javascript - 在提交上单击按钮隐藏第一个选项卡并显示下一个选项卡?

jquery - JQM (jQueryMobile) 访问 URL 历史记录?

linux - 别名未出现在 bash 历史记录中

javascript - e.preventdefault 提交时触发的提交不起作用