chrome.declarativeContent.onPageChanged.removeRules(undefined,function(){})不工作

时间:2014-07-16 09:36:50

标签: javascript google-chrome google-chrome-extension runtime-error declarative

当我尝试使用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()]
            }
        ]);
    });
});

奇怪的是控制台说(按此顺序):

  

你好   安装
  删除了   上面的错误(响应...的错误)

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

错误源自新规则中的actions列表。

actions显然需要一组函数引用

据我所知,actions中的Rule列表必须只包含API提供的“操作”,并且不能执行任意代码。 base documentation对于“行动”是什么并不是很清楚。

然而,从documentation of chrome.declarativeContent(强调我的):

  

作为一个声明式API,此API允许您在onPageChanged事件对象上注册规则,该事件对象在一组条件时采取行动(当前只是ShowPageAction作为PageStateMatcher,符合。

所以,遗憾的是,您似乎无法使用此API来调用init()