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
事件是什么的人注意:苹果不鼓励使用load
和unload
事件,因为在页面缓存的概念下,这些事件没有明显意义。因此,onpageshow
应该能够完成load
事件中我们期望的工作。
最佳答案
另一个可能的解决方案是查看event.persisted
标志以确定它是否已缓存:
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};