Ajax HTML5历史记录:完整页面加载后返回按钮出现问题
我构建了一个web应用程序,它使用AJAX和HTML5历史记录(对于较旧的浏览器有一个回退) 我的应用程序只有一部分是通过后台javascript加载的(这个部分很重,大部分时间都会用到)。其他页面通过常规链接访问,加载这些页面时将重新加载整个页面 当我浏览动态部分时(URL会改变并适合显示的内容),通过常规链接将其保留,然后点击浏览器后退按钮,奇怪的事情发生了:只有在上一个XHR中加载的部分(在我的例子中是包含一些数据的div)显示出来,没有布局和css。当我查看源代码时(在Chromium和FF+Firebug中),DOM只包含上述div 我希望浏览器缓存DOM和其他信息,以便能够重建上一个页面,或者重新加载最后一个URL(该页面将按预期显示,因为如果不通过XHR加载,它将在布局中呈现)。我试图在对XHR的响应上设置缓存控制头,但没有帮助 我列出了一个最小示例:Ajax HTML5历史记录:完整页面加载后返回按钮出现问题,ajax,html,history,back-button,Ajax,Html,History,Back Button,我构建了一个web应用程序,它使用AJAX和HTML5历史记录(对于较旧的浏览器有一个回退) 我的应用程序只有一部分是通过后台javascript加载的(这个部分很重,大部分时间都会用到)。其他页面通过常规链接访问,加载这些页面时将重新加载整个页面 当我浏览动态部分时(URL会改变并适合显示的内容),通过常规链接将其保留,然后点击浏览器后退按钮,奇怪的事情发生了:只有在上一个XHR中加载的部分(在我的例子中是包含一些数据的div)显示出来,没有布局和css。当我查看源代码时(在Chromium和
谢谢你的帮助 这是名称上的冲突: 原始页面有2个状态,占用2个URL:
http://moserei.de/html5_history/
http://moserei.de/html5_history/xhr.html
XHR请求http://moserei.de/html5_history/xhr.html
的响应与原始页面不同。现在这个URLhttp://moserei.de/html5_history/xhr.html
与两件事相关:
当浏览器需要从缓存中获取此URL时(当您单击“上一步”按钮时),它应该做什么?很难说。我不确定历史规范中是否有定义良好的规则,所以请尽量避免这种情况。你说得对,URL
http://moserei.de/html5_history/xhr.html
代表两种不同的含义。但在我看来,浏览器不应该直接显示通过XHR加载的内容。因此,它应该尝试定期重新加载它,当XHR响应上的标题禁止缓存时就会这样做(参见我自己的答案)。如果用户通过AJAX访问/XHR.html
,然后刷新页面怎么办?用户希望显示相同的内容。因此,当您使用历史API在URL之间切换时,通常要确保每个URL都可以通过AJAX状态更改和完整页面请求来访问。你能把这些文件上传到github上吗?希望你还有。