私の最初の拡張機能として、chrome.webRequest
APIを使用して、ウェブページをリロードしています。利用できない場合、ウェブサーバーは要求を別のものにリダイレクトしますURL。リダイレクトが見つかった場合(onBeforeRedirect
イベントが発生した場合)、私の内線番号は元のリクエスト(tabs.reload
)を試し続けます。chrome.tabs.reload()でアクティブなタブ以外のタブをリロードする
すべてがうまくいきますが、複数のタブで実行することはできません。拡張機能は1つのタブを作成して再ロードすることができますが、拡張アイコンをクリックして別のタブを開くか、他の非アクティブなタブをクリックするとbackground.jsが停止します。
複数のタブ(たとえば5つのタブなど)を停止せずに実行するには、どうすれば変更できますか?
chrome.browserAction.onClicked.addListener(function(activeTab) {
var newURL = "https://myurl";
chrome.tabs.create({ url: newURL });
});
chrome.webRequest.onBeforeRedirect.addListener(function (details) {
console.log("Redirect -> Reload");
chrome.tabs.reload();
}, {
urls: ["http://*/*", "https://*/*"]
}, ["responseHeaders"]);
chrome.webRequest.onResponseStarted.addListener(function (details) {
console.log("Response Started");
console.log(details.url);
console.log(details.statusLine);
if (details.url === "https://myurl" && details.statusCode === 200) {
console.log("Finally");
}
}, {
urls: ["http://*/*", "https://*/*"]
}, ["responseHeaders"]);
manifest.jsonを:私はあなたのコードをテストしていないものの
が{
"name": "My Tool",
"description": "My Tool",
"version": "1",
"manifest_version": 2,
"browser_action": {
"default_icon": "icon.png"
},
"background": {
"scripts": ["background.js"]
},
"permissions":[
"https://myurl",
"http://redirectedurl",
"webRequest",
"webRequestBlocking",
"tabs"
]
}
URLがリダイレクトされたとき?サーバーからの応答がリダイレクトからページの提供に変わるのは非常にまれです。 – Makyen
拡張機能で*特定の*タブやリダイレクトされたURL(リプライが利用できるようになるまで特定のURLにキャンプするなど)をリロードする必要がある理由を確認できます。ただし、その場合は、タブごと、またはURL単位でのみ有効にし、すべてのタブでは有効にしないでください。すべてのタブで無差別に実行すると、通常のウェブサーフィンが中断される可能性があります。また、特定のURLとローカルマシンで使用しているリソースを強く叩くことを制限するために、リロードの間にいくらかの遅延を実装することもできます。 – Makyen
はい、これは、拡張機能にタブを再読み込みさせたいという厳しい理由です。私は十分に私の質問を記述しないかもしれません。私の質問に_specific_ tab、_particulart_ URLを含めることができませんでした。 – piptan