这是我的Chrome扩展程序代码:
background.js:
var blockedUrls = function () {
if (localStorage.blocks) {
return JSON.parse(localStorage.blocks).urls
} else {
return [];
}
}
chrome.webRequest.onBeforeRequest.addListener(
function () {
return {cancel: true};
},
{urls: blockedUrls()},
["blocking"]
);
的manifest.json:
{
"name": "HintBlockRequest",
"version": "1.0.0",
"manifest_version": 2,
"description": "Block URLS",
"background": {
"scripts": [ "background.js"]
},
"browser_action": {
"default_icon": "icon.png",
"default_title": "Hint Block Request"
},
"icons": {
"16": "icon_16.png",
"48": "icon_48.png",
"128": "icon_128.png"
},
"permissions": [
"storage",
"webRequest",
"webRequestBlocking",
"<all_urls>"
]
}
目标是当localStorage为空时 - 过滤空列表。然后,当我用local:
填充localStorage时localStorage.setItem('blocks', JSON.stringify({urls: ['https://*/*css*','http://*/*css*']}))
应更新网址过滤器。
工作代码是:
chrome.webRequest.onBeforeRequest.addListener(
function () {
return {cancel: true};
},
{urls: ['https://*/*css*','http://*/*css*']},
["blocking"]
);
(没有功能)
我得到的错误是:
Uncaught Error: Invalid value for argument 1. Property 'urls': Expected 'array' but got 'function'.
at validate (extensions::schemaUtils:34:13)
at WebRequestEventImpl.addListener (extensions::webRequestEvent:80:3)
at WebRequestEvent.publicClassPrototype.(anonymous function) [as addListener] (extensions::utils:138:26)
at chrome-extension://gccoagdpplpkngajecblejkpopiojofd/background.js:13:35
答案 0 :(得分:0)
blockedUrls
是function
返回一个数组,但你错过了调用它。而不是
{urls: blockedUrls},
你需要
{urls: blockedUrls()},