我想制作一个 chrome/edge 扩展,每当发出 URL 请求时(例如谷歌搜索,或在 URL 栏中输入搜索或网站等内容),检查它是否包含某些关键字,如果包含则阻止该请求。
到目前为止,所有语法都是正确的,但我在 Rule.id 属性上不断收到错误,但我找不到原因。
(async () => {
await chrome.declarativeNetRequest.updateDynamicRules(
// options
{
// Rule[]
addRules: [
// Rule
{
action: {
type: "block"
},
// RuleCondition
condition: {
// string
urlFilter: "*youtube|test1*"
},
id: 1
}
]
}
);
})();
“修复”是删除异步函数末尾的参数括号(因为 updateDynamicRules() 是一个承诺),但它不是一个函数,因此不会执行任何操作。 我尝试过的另一件事(这表明问题不是 Rule.id 本身)是将 id 设置为 1、2 和两倍随机数 - 每次我收到“错误:带有 id x 的规则没有一个独特的ID。”错误指针指向第 22 行,顺便说一句,这是代码结束的地方。
这可能是您之前尝试的旧规则。该 API 不符合人体工程学,其开发人员拒绝了我简化它的想法,因此解决方案是 始终显式删除旧 id :
await chrome.declarativeNetRequest.updateDynamicRules({
removeRuleIds: [1],
addRules: [{
// .......................
}],
});
您的
urlFilter
无效。有效的值为 "youtube"
或 "test1"
。如果您想匹配多个模式,则必须创建多个规则。