功能检测bfcache?

时间:2013-05-30 15:24:51

标签: javascript caching

当使用后退按钮转到DOM已被修改的页面时,我对IE10中的this problem感到惊讶:

对于行为1或2,我会很满意,但不是3:

  1. 正确恢复整个状态(如FF和Chrome一样)
  2. 重新加载页面(因为它不应该被缓存)并且可以重新创建当前状态,因为通过Ajax将更改推送到服务器(IE8会这样做)
  3. 但是IE10回到了初始的,未经修改的页面(它保留了表单输入,如果初始页面上有任何内容,但不是整个状态)
  4. 因为我很匆忙,如果有人在进行DOM修改后访问该页面(这条信息存储在哈希中),我就强迫重新加载,这是一个非常愚蠢的解决方案(FF和Chrome don'我需要重装,但现在这样做)。

    一个建议是use localStorage to remember state,我猜这种功能也被归入history.js

    保留备用副本以便进行比较/以防状态未恢复似乎过度,特别是因为在我们的情况下这可能会影响0.01%的用户。 就我的目的而言,如果状态尚未完全保存在bfcache中,则强制重新加载就足够了。

    我可以“简单地”检测是否存在包含所有状态的bfcache吗?如果是这样,当有人回到DOM被修改的页面时,我可以强制重新加载吗?

1 个答案:

答案 0 :(得分:1)

如果已知浏览器用户代理/浏览器未保存修改后的状态,则可以刷新页面。

您也可以在修改状态后将“#modified”附加到URL,因此如果URL包含“#modified”但状态为默认状态,您知道应刷新页面,因为状态不会被缓存正确。

if(document.location.hash == "#HelloWorld")
{
    // Check if state is default
    // If state is default, the page should be refreshed
}
document.location.hash = "#HelloWorld";