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