Mobile Safari使用一种特殊的缓存机制Page Cache(here),该机制基本上使当前页面保持 Activity 状态,但是当我们导航到另一个页面时处于休眠状态。这样,当用户按下back按钮时,它可以立即以最新状态显示上一页。

这对于导航和浏览Web很有用,但是在特殊情况下,这变得很烦人,因为每次用户导航到该页面时,您可能需要获取该页面的新副本。 (就我而言,我必须进入以下页面:登录名和主页)。

我完全知道,没有什么可以阻止用户打开同一应用程序的多个选项卡。我对此并不担心。

cross browser solution for preventing page from being cached没有帮助,因为Safari使页面保持打开状态,但不可见和暂停。

window.onpageshow和处理event.persisted并没有帮助,因为似乎浏览器由于某些原因第二次(当您按下onpageshow按钮时)不执行back事件。

为那些不知道onpageshow事件是什么的人注意:苹果不鼓励使用loadunload事件,因为在页面缓存的概念下,这些事件没有明显意义。因此,onpageshow应该能够完成load事件中我们期望的工作。

最佳答案

另一个可能的解决方案是查看event.persisted标志以确定它是否已缓存:

window.onpageshow = function(event) {
    if (event.persisted) {
        window.location.reload()
    }
};

08-07 18:48