Как мое первое расширение, я пытаюсь использовать API chrome.webRequest
для перезагрузки веб-страниц, которые, когда они недоступны, веб-сервер перенаправляет запрос другому 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