javascript - 单击后退按钮时防止从缓存中加载 Safari

标签 javascript caching safari back-button

单击后退按钮时,Safari 加载旧的 youtube 视频时出现问题。我曾尝试将 onunload=""(此处提到 Preventing cache on back-button in Safari 5 )添加到 body 标签,但在这种情况下不起作用。

有什么方法可以防止从某个页面上的缓存加载 safari?

最佳答案

您的问题是由 back-forward cache 引起的.它应该在用户离开时保存页面的完整状态。当用户使用后退按钮返回页面时,可以非常快速地从缓存中加载页面。这与仅缓存 HTML 代码的普通缓存不同。

当为 bfcache 加载页面时 onload 事件不会被触发。相反,您可以检查 onpageshow 事件的 persisted 属性。它在初始页面加载时设置为 false。当页面从 bfcache 加载时,它被设置为 true。

笨拙的解决方案是在从 bfcache 加载页面时强制重新加载。

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

如果您使用的是 jQuery,那么请执行以下操作:

$(window).bind("pageshow", function(event) {
    if (event.originalEvent.persisted) {
        window.location.reload() 
    }
});

关于javascript - 单击后退按钮时防止从缓存中加载 Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788802/

相关文章:

javascript - 当用户清除浏览器缓存时如何调用函数

java - Spring Boot,使用 EhCache 进行缓存

twitter-bootstrap - 当元素为 25% 时,Safari 显示 flex 不起作用

html - SVG 中的剪切路径在 Safari 中不起作用

javascript - 使用 vue-router 的谷歌收件箱式导航

javascript - Angular 部分 : templateUrl Routing Local . HTML 文件

javascript - 如何将 mvc Controller actionresult 参数传递给 angularjs Controller

asp.net - 有什么方法可以从 ASP.NET 访问 IIS 内核缓存?

node.js - Safari 和 iOS 中的 Express.js 中的 Gzip 压缩问题

javascript函数返回数据