content_scripts
类型 | 数组(Array ) |
---|---|
必要 | 否 |
示例 |
json
|
让浏览器将content scripts加载到匹配网址的网站上
此键(content_scripts)是一个数组,每个项目都是一个满足下列条件的对象:
- 必须包含一个名为
matches
的键,指定要加载脚本的 URL 的格式 - 可以包含一个名为
js
或css
的键,列出要加载到匹配页面的脚本 - 可以包含控制如何加载、何时加载等方面更精细的属性
下面表格列出了所有与你可以使用的键:
名称 | 类型 | 描述 |
---|---|---|
all_frames |
Boolean |
默认为 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
接下来, 文件将在run_at指定的时间注入。 |
matches |
Array |
一个match patterns的数组,请参阅下面的匹配 URL 格式。 这是唯一的必须键。 |
run_at |
String |
此选项指定在“js”键中的脚本何时被注入。你可以使用下列的三个字符串之一,每个字符串都代表加载文档过程中的不同状态。状态直接对应于
默认值为“document_idle”。 |
匹配 URL 格式
“content_scripts”键基于 URL 匹配将 content scripts 注入到网页上:如果网页的 URL 与键中的规则匹配,则将注入脚本。“content_scripts”中有四个属性,可以用于此规则:
matches
: 一个关于match patterns的数组exclude_matches
: 一个关于match patterns的数组include_globs
: 一个关于globs的数组exclude_globs
: 一个关于globs的数组
要匹配这些属性之一,网址必须与其数组中的至少一个项匹配。例如,指定一个属性:
"matches": ["*://*.example.org/*", "*://*.example.com/*"]
"http://example.org/"和"http://example.com/"都将会匹配
由于 matches 是唯一的强制性键,其他三个键用于进一步限制匹配的 URL。要匹配作为一个整体的键,网址必须:
- 匹配 matches 属性
- 并且,匹配 include_globs 属性(如果有)
- 并且,不匹配
exclude_matches
属性(如果有) - 并且,不匹配
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
BCD tables only load in the browser