当我尝试使用chrome.declarativeContent.onPageChanged.removeRules()删除所有规则时,它说:
响应events.removeRules时出错:错误:无效值 参数1.属性'.1':值与任何有效类型都不匹配 选项,属性'.2':值与任何有效类型选择都不匹配。
这是代码,我只是从这里复制了它:https://developer.chrome.com/extensions/examples/api/pageAction/pageaction_by_url/background.js
// When the extension is installed or upgraded ...
chrome.runtime.onInstalled.addListener(function () {
console.log('installed');
// Replace all rules ...
chrome.declarativeContent.onPageChanged.removeRules(undefined, function () {
console.log('removed');
// With a new rule ...
chrome.declarativeContent.onPageChanged.addRules([
{
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {
urlEquals: 'www.google.com'
}
})
],
actions: [new chrome.declarativeContent.ShowPageAction(), console.log('hi'), init()]
}
]);
});
});
奇怪的是控制台说(按此顺序):
你好 安装
删除了 上面的错误(响应...的错误)
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
错误源自新规则中的actions
列表。
actions
显然需要一组函数引用
据我所知,actions
中的Rule
列表必须只包含API提供的“操作”,并且不能执行任意代码。 base documentation对于“行动”是什么并不是很清楚。
然而,从documentation of chrome.declarativeContent
(强调我的):
作为一个声明式API,此API允许您在
onPageChanged
事件对象上注册规则,该事件对象在一组条件时采取行动(当前只是ShowPageAction
)作为PageStateMatcher
,符合。
所以,遗憾的是,您似乎无法使用此API来调用init()