1

对于 chrome 扩展中的内容脚本,您可以指定matchesexclude_matches控制它们被注入的页面。这必须在扩展的清单中指定,如下所示

{
  "name": "Color picker",
  ...
  "content_scripts": [
    {
      "matches": ["http://*/*", "https://*/*"],
      "exclude_matches": ["http://www.google.com/*"],
      "css": ["color_picker.css"],
      "js": ["jquery.js", "color_picker.js"]
    }
  ],
  ...
}

我想知道是否可以添加["http://www.yahoo.com/*"],exclude_matches以及何时使用扩展程序。这样,我可以让用户控制exclude_matches

4

2 回答 2

8

扩展不能修改任何本地文件,包括扩展的manifest.json. Chrome 为可选权限提供了一个 API ,但这不包括内容脚本

您可以手动创建灵活的模式:

// In the content script:
var exclude = /^https?:\/\/(www\.)?yahoo\.com\//;
if (!exclude.test(location.href)) {
     // Run logic.
}

正则表达式为此目的非常强大,尽管不是必需的。代替,可以使用location.href其他location属性,例如。location.host

另请参阅:MDNwindow.location:。

于 2012-04-16T10:02:56.600 回答
2

您可以将扩展程序永远不能exclude_matches做的事情视为“硬”限制- 简而言之,它为您的内容脚本不应触及的页面类型设置了永久界限。无法即时修改它,因为它是永久性的。

但是,如果要使其灵活,则需要以编程方式进行注入。Google 有关于如何使用executeScript. 您需要使用用户控制的列表添加自己的排除逻辑(也许还可以使用来自其他答案的好建议)。

于 2012-04-16T17:12:06.813 回答