我正在尝试为浏览器编写一个脚本来决定它正在加载的页面是来自 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/