--- title: content_scripts slug: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts tags: - WebExtensions - 扩展 - 附加组件 translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts ---

{{AddonSidebar}}

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

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

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

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

名称 类型 描述
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”键中的脚本何时被注入。您可以使用下列的三个字符串之一,每个字符串都代表加载文档过程中的不同状态。状态直接对应于{{domxref("Document/readyState", "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".

示例

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

Browser compatibility

{{Compat("webextensions.manifest.content_scripts")}}