Mobile Safari 使用一种特殊的缓存机制Page Cache
(这里),它基本上保持当前页面处于活动状态,但当我们导航到另一个页面时会休眠。back
这样,当用户按下按钮时,它可以立即以最新状态显示上一页。
这对于导航和浏览网页很有用,但对于特殊情况,这会变得很烦人,因为每次用户导航到该页面时,您可能需要获取该页面的新副本。(在我的情况下,我必须页面:登录和主页)。
我完全知道没有什么能阻止用户打开同一应用程序的多个选项卡。我对此并不担心。
防止页面被缓存的跨浏览器解决方案无济于事,因为 Safari 保持页面打开但不可见和暂停。
window.onpageshow和处理event.persisted
没有帮助,因为浏览器似乎由于某些原因第二次(当您按下按钮时)没有执行onpageshow
事件back
。
对于那些不知道事件是什么的人请注意onpageshow
:Apple 不鼓励使用load
和unload
事件,因为对于页面缓存的概念,这些事件没有明确的意义。所以,onpageshow
应该做我们对load
事件的期望。