content_scripts

类型 数组(Array
必要
示例
json

"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,可以这样做:

json
"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”中有四个属性,可以用于此规则:

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

json
"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".

示例

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

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

json
  "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”添加的全局变量。

Browser compatibility

BCD tables only load in the browser