使用后退按钮转到其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的页面时,我可以在没有它的情况下强制重新加载吗?

    最佳答案

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

    您也可以在状态修改后,在URL后面附加“#modified”,因此,如果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";
    

    关于javascript - 功能检测bfcache?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16840071/

    10-09 23:14