当使用后退按钮转到 DOM 已修改的页面时,我对 IE10 中的这个问题感到惊讶:
我会对行为 1 或 2 感到满意,但不是 3:
- 正确恢复整个状态(就像 FF 和 Chrome 一样)
- 重新加载页面(因为它不应该被缓存)并且可以重新创建当前状态,因为通过 Ajax 将更改推送到服务器(IE8 这样做)
- 但 IE10 回到了初始的、未修改的页面(它保留表单输入,如果初始页面上有任何输入,但不是整个状态)
因为我很着急,如果有人在进行 DOM 修改后访问该页面(该信息存储在哈希中),我只是强制重新加载,这是一个非常愚蠢的解决方案(FF 和 Chrome 不需要重新加载,但现在做)。
一个建议是使用 localStorage 来记住状态,我猜这种功能也包含在history.js中。
保留一份备用副本以供比较/以防状态未恢复似乎有点过头了,特别是因为在我们的案例中,这可能会影响 0.01% 的用户。就我的目的而言,如果状态尚未完全保存在 bfcache 中,则强制重新加载就足够了。
我可以“简单地”检测是否存在包含所有状态的 bfcache 吗?如果是这样,当有人返回到其 DOM 已修改的页面时,我可以在没有它的情况下强制重新加载?