作为我的第一个扩展,我尝试使用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