类型 数组(Array)
必要
示例
"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

让浏览器将content scripts加载到匹配网址的网站上

此键(content_scripts)是一个数组,每个项目都是一个满足下列条件的对象:

  • 必须包含一个名为matches的键,指定要加载脚本的URL的格式

  • 可以包含一个名为jscss的键,列出要加载到匹配页面的脚本

  • 可以包含控制如何加载、何时加载等方面更精细的属性

下面表格列出了所有与你可以使用的键:

名称 类型 描述
all_frames Boolean

true: 将jscss注入该页面所有的框架(frame)中

false: 仅注入到顶层

默认为false

css Array

一个数组,包含将会被注入到匹配页面的CSS文件的路径(路径相对于manifest.json)。

在加载DOM之前,文件将会按指定的顺序注入。

exclude_globs Array
Firefox 自48版本开始支持globs

包含通配符的字符串数组。 请参阅下面的匹配URL格式

exclude_matches Array 一个match patterns的数组,请参阅下面的匹配URL格式
include_globs Array
Firefox 自48版本开始支持globs
包含通配符的字符串数组。 请参阅下面的匹配URL格式
js Array

一个数组,包含将会被注入到匹配页面的JS文件的路径(路径相对于manifest.json)。

文件将会按指定的顺序注入。这意味着如果你想在另一个脚本中包含jQuery,可以这样做:

"js": ["jquery.js", "my-content-script.js"]

接下来,"my-content-script.js"可以使用jQuery.

文件将在run_at指定的时间注入。

matches Array

一个match patterns的数组,请参阅下面的匹配URL格式

这是唯一的必须键。

run_at String

此选项指定在“js”键中的脚本何时被注入。您可以使用下列的三个字符串之一,每个字符串都代表加载文档过程中的不同状态。状态直接对应于Document.readyState

  • document_start”:对应于正在加载。 DOM仍在加载中。
  • document_end”:对应于可交互。 DOM已完成加载,但脚本和图像等资源可能仍在加载。
  • document_idle”:对应完成。 文档及其所有资源已完成加载。

默认值为“document_idle”。

在所有情况下,js键中的文件都会在css键中的文件之后注入。

匹配URL格式

“content_scripts”键基于URL匹配将content scripts注入到网页上:如果网页的URL与键中的规则匹配,则将注入脚本。“content_scripts”中有四个属性,可以用于此规则:

要匹配这些属性之一,网址必须与其数组中的至少一个项匹配。例如,指定一个属性:

"matches": ["*://*.example.org/*", "*://*.example.com/*"]

"http://example.org/"和"http://example.com/"都将会匹配

由于matches是唯一的强制性键,其他三个键用于进一步限制匹配的URL。要匹配作为一个整体的键,网址必须:

  1. 匹配matches属性
  2. 并且,匹配include_globs属性(如果有)
  3. 并且,不匹配exclude_matches属性(如果有)
  4. 并且,不匹配exclude_globs属性(如果有)

globs

Firefox 自48版本开始支持globs

glob只是一个可以包含通配符的字符串。 有两种类型的通配符,您可以在一个glob中组合使用它们:

  • "*" 匹配零个或多个字符
  • "?" 匹配一个字符

例如,"*na?i"会匹配"illuminati"和"annunaki",但不会匹配"sagnarelli".

Chrome incompatibilities

content_scripts

Firefox does not support:

  • match_about_blank

In Firefox, content scripts declared in the manifest will be injected into existing tabs on each extension load. In Chrome, content scripts do not apply to tabs already open when extension is loaded.

示例

"content_scripts": [
  {
    "matches": ["*://*.mozilla.org/*"],
    "js": ["borderify.js"]
  }
]

这会将content脚本“borderify.js”插入到“mozilla.org”或其任何子域下的所有页面,无论是HTTP还是HTTPS。

  "content_scripts": [
    {
      "exclude_matches": ["*://developer.mozilla.org/*"],
      "matches": ["*://*.mozilla.org/*"],
      "js": ["jquery.js", "borderify.js"]
    }
  ]

这会将两个content脚本插入到“mozilla.org”及其任何子域(除“developer.mozilla.org”外)的所有页面中,无论是通过HTTP还是HTTPS。

content脚本有相同的DOM视图,并按照它们在数组中出现的顺序注入,因此“borderify.js”可以访问由“jquery.js”添加的全局变量。

文档标签和贡献者

 此页面的贡献者: shuangya
 最后编辑者: shuangya,