使用后退按钮转到其DOM已被修改的页面时,我对IE10中的this problem感到惊讶:
我会对行为1或2感到满意,但对3则不满意:
因为我很着急,所以如果有人在进行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/