作爲我的第一個擴展,我嘗試使用chrome.webRequest
API重新加載網頁,當網頁不可用時,Web服務器將請求重定向到另一個URL。如果發現重定向,則我的分機將繼續嘗試原始請求(tabs.reload
)(發生onBeforeRedirect
事件)。已將chrome.tabs.reload()重新加載除活動選項卡以外的選項卡
一切工作正常,除了我不能讓它運行在多個選項卡上。該擴展程序可以創建一個選項卡並繼續重新加載,但是當我單擊擴展圖標打開另一個選項卡或當單擊其他非活動選項卡時,background.js停止運行。
如何修改它以在多個選項卡(例如,5個選項卡同時)上運行而不停止?
這裏是background.js:
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