【发布时间】:2014-01-21 13:22:33
【问题描述】:
当我使用后退按钮转到 DOM 已修改的页面时,我对 IE10 中的this problem 感到惊讶:
我会对行为 1 或 2 感到满意,但不是 3:
- 正确恢复整个状态(就像 FF 和 Chrome 一样)
- 重新加载页面(因为它不应该被缓存)并且可以重新创建当前状态,因为更改是通过 Ajax 推送到服务器的(IE8 会这样做)
- 但是 IE10 回到了初始的、未修改的页面(它保留表单输入,如果初始页面上有任何输入,但不是整个状态)
因为我很着急,如果有人在进行 DOM 修改后访问该页面(该信息存储在哈希中),我只是强制重新加载,这是一个非常愚蠢的解决方案(FF 和 Chrome 不不需要重新加载,但现在需要)。
一个建议是use localStorage to remember state,我猜这种功能也包含在history.js中。
保留一份备用副本以供比较/以防状态未恢复似乎有点过头了,尤其是因为在我们的案例中,这可能会困扰 0.01% 的用户。 就我的目的而言,如果状态尚未完全保存在 bfcache 中,则强制重新加载就足够了。
我可以“简单地”检测是否存在包含所有状态的 bfcache 吗?如果是这样,当有人返回其 DOM 已修改的页面时,我可以在它不存在的情况下强制重新加载?
【问题讨论】:
-
@ryan 谢谢,我知道这个问题。它是相关的,但答案是关于从各种本地存储恢复状态,而不是检测 bfcache 的“多好”。
标签: javascript caching