Ajax,后退按钮和DOM更新

Ajax,后退按钮和DOM更新

如果javascript修改了页面A中的DOM,则用户导航到页面B,然后点击返回按钮返回页面A.对页面A的DOM的所有修改都将丢失,并且向用户显示最初从服务器检索的版本。

它在stackoverflow,reddit和许多其他流行的网站上以这种方式工作。(尝试在此问题中添加测试评论,然后导航到不同的页面并点击返回按钮返回 - 您的评论将“消失”)

这是有道理的,但一些网站(apple.com,basecamphq.com等)在某种程度上迫使浏览器为用户提供最新的页面状态。(转到http://www.apple.com/ca/search/?q=ipod,单击顶部的“下载”链接,然后单击“返回”按钮 - 将保留所有DOM更新)

来自哪里的不一致?


慕少森
浏览 434回答 3
3回答

慕容3067478

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

慕的地10843

Facebook通过修改Ajax请求的URL中的哈希标识符来记住页面状态。这些更改记录在浏览器历史记录中,因此当用户单击后退按钮时,哈希值将更改为之前的更改。因此,暗示您需要一些Javascript来监视has标识符,并在浏览器更改时做出反应。 Andreas Blixt有一个哈希监控脚本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript