Safari返回按钮使用时不会重新加载页面

9
这个问题在较早版本的 Safari 中得到了解决(The Safari Back Button Problem)。尽管我现在使用的是最新版 Safari(9.0.1),但之前回答中列出的任何解决方案均已失效。有没有办法在 Safari 上使用“后退”按钮时“刷新/重新加载”页面?这曾经是一种检测页面是否使用后退按钮访问的方法,然而在我使用的 Safari 版本中不再起作用。
<body onunload=""> 
1个回答

30

其他答案将事物绑定到window.onpageshow,但这是我唯一有效的版本:一旦您的页面处于您不希望超过重定向的最终状态,您只需绑定pageshow事件,然后检查"persisted"属性是否为true以确定是否应重新加载它。

window.addEventListener("pageshow", function(evt){
        if(evt.persisted){
        setTimeout(function(){
            window.location.reload();
        },10);
    }
}, false);

2
这真是太宝贵了。我们遇到了一个问题,即迷你购物车在Safari中没有更新,并注意到Amazon和其他大型网站会触发页面重新加载来解决Safari中的问题,可能类似于这样的方法。 - wickywills
4
另外有用的是在重新加载调用之后添加 document.body.innerHTML = '';,以隐藏旧的内容残留。 - smnbbrv
2
此方法的详细信息可以在关键字 bfcache 下找到(例如通过此博客文章)。您还可以钩入一些代码来整理前一页,而不是进行完全重新加载,就像这里一样,以避免不必要的负载。 - flaschbier
1
我使用这个来重新连接我的WebSocket!+1 - simlmx
在这种情况下,“persisted”是什么意思? - leo848
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接