chrome扩展程序中的声明性内容“删除规则”解释

时间:2018-06-19 16:07:42

标签: javascript json

我正在阅读Google Chrome扩展程序的“入门”教程,并且遇到了以下代码:

chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
  chrome.declarativeContent.onPageChanged.addRules([{
    conditions: [new chrome.declarativeContent.PageStateMatcher({
      pageUrl: {hostEquals: 'developer.chrome.com'},
    })
    ],
        actions: [new chrome.declarativeContent.ShowPageAction()]
  }]);
});

我查看了“ declarativeContent” API和以下来源:https://developer.chrome.com/extensions/declarativeContent#event-onPageChanged

但是,我不知道“ onPageChanged”代表什么动作。我们在这段代码中修改了哪些“规则”?我知道此操作仅在主机等于“ developer.chrome.com”时才会发生,但我不知道为什么需要“ .removeRules”部分。

1 个答案:

答案 0 :(得分:1)

onPageChanged是来自文档的特殊事件处理程序:

  

声明性事件处理程序提供了一种定义规则的方法   由声明性条件和动作组成。条件是   在浏览器中评估,而不是JavaScript引擎,   减少了往返延迟,并提高了效率。

onPageChanged为您提供了3种可以使用规则的方法:

  • addRules
  • removeRules
  • getRules

它们非常不言自明。关于您的代码:

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

以上所有3个函数均实现回调模式,在removeRules的情况下,当删除规则ID时,将执行指定的函数。 removeRules接受的第一个参数是规则ID数组;如果要删除所有当前活动的规则,则使用undefined