問題クロームWebRequestクラス - 私は タブで実行されているChromeの拡張機能にヘッダを渡すようにしようとしている
- 一度クロームイベントリスナーを追加します。現在の私の現在のコードでは、ページがリフレッシュされるたびに1つのイベントが追加されます。つまり、同じページで5回リフレッシュすると、最後にはイベントが各ページのロードで5回トリガーされます。私は にユーザーを許可するように、バックグラウンドスクリプトを使用してタブを実行する必要が
制限
- は、それが実行されるサイトを除外する。
- 私が望む特定のヘッダーを取得するために、リソースを再要求しようとする試みがCORSであり、縮小されたヘッダーセットにアクセスできるため、バックグラウンド拡張を使用して待機する必要があります。
コード
私はイベントがすでに解雇しているかどうかを確認する変数を設定しようとしました私が試した何
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
// Prevent double firing of event - extension should run once on complete.
if (changeInfo.status == "complete") {
chrome.webRequest.onCompleted.addListener(
function(details) {
console.log(details);
// Pseudo code, where things are pulled from storage
// Based on this I then:
executeScript(tabId, "built_seo_traffic.js");
},
{
urls: ["*://*/*"],
types: ["main_frame"],
tabId: tab.id
},
["responseHeaders"]
);
}
});
、しかし、私はこれだけのように得ることができますスクリプトは各タブで1回ではなく、すべてのタブで1回実行されます。
これは正しく対応していますか?私はこれを簡単にする何かが欠けているだけですか? @wOxxOmへ
起動時にリスナーを削除する必要があります。関数に名前を追加し、コールバック内のchrome.webRequest.onCompleted.removeListenerに渡します。 – wOxxOm
ありがとう@wOxxOm私は、渡されたすべての情報を取得する方法を少し苦労していましたが、正しい方向にポインタを置いてくれました。私はそれを正しいとマークすることができるので、答えとして投稿しても構いません。 –
[なぜ私のカウンタは毎回複数のカウンタを追加するのですか?](https://stackoverflow.com/questions/38808272/why-is-my-counter-adding-more-than-one-each-time) – Makyen