首页 > 解决方案 > chrome 扩展中的声明性内容“移除规则”解释

问题描述

我正在阅读 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”部分。

标签: javascriptjson

解决方案


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

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

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

  • addRules
  • removeRules
  • getRules

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

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

以上 3 个函数都实现了回调模式,在 的情况下removeRules,当规则 id 被删除时,指定的函数将执行。接受的第一个参数removeRules是规则 ID 数组,或者undefined如果您想删除所有当前活动的规则。


推荐阅读