Ajax,后退按钮和DOM更新如果javascript修改了页面A中的DOM,则用户导航到页面B,然后点击返回按钮返回页面A.对页面A的DOM的所有修改都将丢失,并且向用户显示最初从服务器检索的版本。它在stackoverflow,reddit和许多其他流行的网站上以这种方式工作。(尝试在此问题中添加测试评论,然后导航到不同的页面并点击返回按钮返回 - 您的评论将“消失”)这是有道理的,但一些网站(apple.com,basecamphq.com等)在某种程度上迫使浏览器为用户提供最新的页面状态。(转到http://www.apple.com/ca/search/?q=ipod,单击顶部的“下载”链接,然后单击“返回”按钮 - 将保留所有DOM更新)来自哪里的不一致?
3 回答

慕容3067478
TA贡献1773条经验 获得超3个赞
我一直试图让Chrome的行为像Safari一样,而我发现的唯一方法就是设置Cache-control: no-store
标题。这会强制浏览器在用户按下后退按钮时从服务器重新获取页面。不理想,但比显示过时的页面更好。

慕的地10843
TA贡献1785条经验 获得超8个赞
Facebook通过修改Ajax请求的URL中的哈希标识符来记住页面状态。这些更改记录在浏览器历史记录中,因此当用户单击后退按钮时,哈希值将更改为之前的更改。因此,暗示您需要一些Javascript来监视has标识符,并在浏览器更改时做出反应。 Andreas Blixt有一个哈希监控脚本。
添加回答
举报
0/150
提交
取消