如果页面位于 bfcache 中,则 JavaScript 重新加载页面

标签 javascript html

我正在尝试为浏览器编写一个脚本来决定它正在加载的页面是来自 bfcache 还是来自服务器。我 99% 确定 bfcache 是问题所在,因为我见过的所有其他此类问题都将 bfcache 视为问题所在。

这是相关的,因为 bfcache 页面“卡住”了我正在开发的网站上 JavaScript 的状态(我没有编写这些脚本,我是 JavaScript 业余爱好者),并且如果您使用后退按钮返回页面时,脚本不起作用。不过,如果您点击刷新按钮,它们就可以正常工作。

这是我解决此问题的尝试:

<body onload="noBFC()" onpageshow="checkCache()">
// Lots of HTML content

<script type="text/javascript">
    function checkCache(){
        if (cached == true){
            location.reload(true);}
    };

    var cached = "";

    function noBFC(){
        cacheCheck = false;
    };

    window.onunload() {
        cacheCheck = true;
    };
</script>

基本原理是,每当用户离开页面时,window.onunload() 都会将变量 cached 设置为 bool 值“true”,以表明它已经被bfcache缓存了。

然后,每当使用 onpageshow 再次显示页面时,脚本就会检查该变量。如果为“true”,则会强制重新加载页面,并将 cached 的值设置为“false”。

在语法上我是否错过了一些简单的东西,或者这只是不是一个可行的解决方案?

最佳答案

尝试将随机查询附加到位置字符串。

window.location = location.href + '?random=' + 1234;

关于如果页面位于 bfcache 中,则 JavaScript 重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26312380/

相关文章:

javascript - JS 时间跟踪器未按预期工作

javascript - 使用 AngularJS $http 时检查 php 插入是否成功

javascript - 如何在 ui-sref 中转义 UI 路由器参数

javascript - Express 服务器未向客户端发送响应(使用 fetch)

javascript - 如何在 asp.net c# 中显示进度条直到整个 aspx 加载完毕

javascript - 在 HighCharts 中如何自动设置 xAxis 的数量?

javascript - 如何根据路线重用具有不同变量的AngularJS Controller

javascript - 为什么 Angular 1.6.6v $cookies 不执行读取或写入操作?

html - Google Web 字体导入在堆栈末尾不起作用

javascript - 页面加载时,检查条件并在 Angular JS 中显示模式弹出窗口