chrome webRequest onBeforeRequest прослушиватель событий не срабатывает, пока на странице не будет открыто всплывающее окно - PullRequest
0 голосов
/ 08 октября 2018

Я запускаю тест для расширения, которое я делаю.Я хочу, чтобы расширение обновляло значок при выполнении любых веб-запросов, однако значок начинает обновляться только после того, как я открыл всплывающее окно.Может кто-нибудь объяснить, почему это так?

manifest.json

{
"manifest_version": 2,
"name": "Ad-scan",
"version": "0.1",
"content_scripts": [
{
"js": ["inject.js"],
"matches": ["<all_urls>"],
"run_at": "document_start",
"all_frames": true
}
],
"permissions": ["activeTab","declarativeContent","webRequest","webNavigation"],
"browser_action": {
"default_popup": "popup.html"
},
"background": {
"scripts": ["background.js"],
"persistent": true
}
}

background.js

chrome.webRequest.onBeforeRequest.addListener(function(details) {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    chrome.tabs.sendMessage(tabs[0].id, {toInjected: details.url}, function(response){
        chrome.runtime.sendMessage({webReqUpd: response.totalAds}) //ads are sent to popup
        chrome.browserAction.setBadgeText({text: response.totalAds.toString()}) //badge is updated  
    })
})},{urls: ["<all_urls>"]});

inject.js

var ads = 0;
var adURLs = [];
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){
ads = ads + 1 //ads value is updated
adURLs.push(request.toInjected) //array is updated
console.log(adURLs) //webRequests made on page are logged to console
//logging webRequests array to console to test webRequest event
sendResponse({totalAds: ads})//sending all ads to background
})

1 Ответ

0 голосов
/ 05 ноября 2018

Я упустил из виду, что в разрешениях для API webRequest должны быть указаны хост-сети.Я добавил разрешения для https и http в манифест, теперь он работает.

"permissions": ["activeTab","declarativeContent","webRequest","https://*/*","http://*/*"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...