0

以下のコードは、URLがロードされているかどうかをチェックしてコンソールにログします。私はページがbfcacheまたはhttpキャッシュからロードされているかどうかを確認するシンプルでクリーンな方法があるかどうかを知りたいですか? Firefoxのマニュアルには、URL AからBに移動してからURL Aに戻ると、loadイベントが発生してはならないと書かれていますが、これは私の経験ではありません。ページがbfcache、HTTPキャッシュ、または新しく取得されたかどうかをチェックします。

var tabs = require("sdk/tabs"); 

function onOpen(tab) { 
    tab.on("pageshow", logPageShow); 
    tab.on("load", logLoading); 
} 

function logPageShow(tab) { 
    console.log(tab.url + " -- loaded (maybe from bfcache?) "); 
} 

function logLoading(tab) { 
    console.log(tab.url + " -- loaded (not from bfcache) "); 
} 

tabs.on('open', onOpen); 
+0

何かを記載した文書についての陳述をする場合は、記載されている文書へのリンクを提供してください。 – Makyen

答えて

0

私はそのための任意の意図的なAPIがあるかどうかわかりませんが、頭に浮かんだ問題を回避するには、performance.timing.responseEnd - performance.timing.requestStartの値をチェックすることです。 <= 5の場合は、おそらくHTTPまたはback-forward cacheとなります。それ以外の場合は、Webからのダウンロードです。

清潔なURLを開かずに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 
} 

また、Manipulating the browser historyの記事を参照してください。

関連する問題