我正在针对个人情况(网站自动化)开发一款小型的Chrome扩展程序供个人使用,但我遇到了问题。如何在后台脚本上捕获网络错误并调用某个函数。
我已经实现了这种方法:
chrome.webRequest.onErrorOccurred.addListener(
handleNetworkError,
{urls: ["http://*/*", "https://*/*"]
});
从我看到的男子汉
::net
错误,DNS失败,网络更改等方面,它捕获了一些网络错误。但是今天我注意到HTTP错误,例如:
GET https://example.com 522 (Origin Connection Time-out)
没有触发监听器,我该如何使它们也起作用?
最佳答案
在用户@Xan的帮助下,我设法解决了这个问题:
function extractStatus(line) {
var match = line.match(/[^ ]* (\d{3}) (.*)/);
if (match)
return {code: match[1], message: match[2]};
else
return undefined;
}
chrome.tabs.query({active: true, lastFocusedWindow: true }, function(tabsArray) {
tab = tabsArray[0];
scope = {urls: ["https://example.com/*"], tabId: tab.id};
console.log("Listening for errors...");
// ::net errors
chrome.webRequest.onErrorOccurred.addListener(handleNetworkError, scope);
// HTTP errors
chrome.webRequest.onHeadersReceived.addListener(function(details) {
var status = extractStatus(details.statusLine);
if (!status)
return;
if (status.code.charAt(0) == '5' || status.code.charAt(0) == '4')
handleNetworkError();
}, scope);
});
关于javascript - Chrome扩展程序: Background Script Catch Network and HTTP Errors,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28106097/