私はWebExtensions拡張でchrome.tabs
を使用してwebNavigation.onHistoryStateUpdated
をキャッチしようとしています。バックグラウンドページのすべてのタブのonHistoryStateUpdatedイベントをキャッチ
問題は、私が唯一の私がすべて他のタブからonHistoryStateUpdated
イベントを聞くために作成した永続的なバックグラウンドページのonHistoryStateUpdated
イベントをキャッチすることができ、です!
tabs.onUpdated
イベントはバックグラウンドページから完全に正常に動作しますが、onHistoryStateUpdated
はブラウザのバック/フォワードイベントを捕まえなければなりません。
manifest.jsonを
{
"manifest_version": 2,
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"background": {
"page": "background.html",
"persistent": true
},
"permissions": [
"tabs",
"webNavigation"
]
}
background.js
// Works not... (i.e. is not fired)
chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
console.log("tabid", tabId);
});
// WORKS!
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
console.log("Tab #" + tabId, " has its URL to: (" + changeInfo.status + ")");
console.log("\t" + changeInfo.url);
});
'chrome.tabs.onUpdated'はヒストリナビゲーションを含むすべてのURL変更を捕捉するのに十分ですが、' chrome.webNavigation.onHistoryStateUpdated'は 'location.hash = '#newhash''のような直接URLハッシュ変更では発生しません – wOxxOm
@ wOxxOm私は理解していますが、URLの変更がバック/フォワードボタンによるものかどうかを検出する必要があります(JavaScriptリダイレクト、リンクをクリックするなど) – boramalper
この方法で「戻る」ボタンのナビゲーションを検出できます'forward'ボタンについてはわかりません:報告されたtransitionTypeは' link'です。うーん、おそらく、トランジションクォリファイアーと組み合わせると、それを推論することができます。また、必ず[Firefox 48以降](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/webNavigation/onHistoryStateUpdated)を使用してください。 – wOxxOm