下面的代码检查是否加载了网址,然后登录到控制台。我想知道是否有简单,干净的方法来检查页面是否从bfcache或http缓存加载? Firefox文档指出,如果我从URL A转到B然后点击后退按钮到URL A,则不应触发load
事件,但这不是我的经验,load
和{{1无论如何记录,有人知道为什么吗?
PageShow
答案 0 :(得分:0)
我不确定是否有任何有目的的API,但我想到的解决方法是检查performance.timing.responseEnd - performance.timing.requestStart
的值。如果是<= 5
,则很可能是HTTP
或back-forward cache
。否则,它是从网上下载的。
通过back
按钮识别返回页面而不是打开干净的网址的方法是使用history API
。例如:
// on page load
var hasCameBack = window.history && window.history.state && window.history.state.customFlag;
if (!hasComeBack) {
// most likely, user has come by following a hyperlink or entering
// a URL into browser's address bar.
// we flag the page's state so that a back/forward navigation
// would reveal that on a comeback-kind of visist.
if (window.history) {
window.history.replaceState({ customFlag: true }, null, null);
}
}
else {
// handle the comeback visit situation
}
另见MDN的Manipulating the browser history文章。