content_scripts
| 类型 | Array |
|---|---|
| 必填 | 否 |
| Manifest 版本 | 2 或更高 |
| 示例 |
json |
指示浏览器将 内容脚本 加载到 URL 与指定模式匹配的网页中。
此键是一个数组。每个项目都是一个对象,该对象
- 必须 包含一个名为
matches的属性,该属性指定要加载脚本的 URL 模式; - 可以 包含名为
js和css的属性,这些属性列出了要加载到匹配页面中的脚本和样式表;并且 - 可以 包含一些其他属性,用于控制内容脚本的加载方式和时机。
此表详细介绍了您可以包含的所有属性。
| 名称 | 类型 | 描述 |
|---|---|---|
all_frames
|
Boolean |
默认为 |
css
|
Array |
一个相对于 注意: Firefox 会相对于 CSS 文件本身解析注入的 CSS 文件中的 URL,而不是相对于其注入到的页面。 |
css_origin
可选 |
String |
CSS 注入的样式来源
"author"。此属性在 Firefox 和 Safari 中对大小写不敏感。 |
exclude_globs
|
Array |
一个包含通配符的字符串数组。请参阅下面的 匹配 URL 模式。 |
exclude_matches
|
Array |
一个 匹配模式 数组。请参阅下面的 匹配 URL 模式。 |
include_globs
|
Array |
一个包含通配符的字符串数组。请参阅下面的 匹配 URL 模式。 |
js
|
Array |
一个相对于 |
match_about_blank
|
Boolean |
将内容脚本插入到 URL 为 这对于在 URL 为 例如,假设您有如下 json 如果用户加载
注意: 从 Firefox 52 版本开始支持 请注意,在 Firefox 中,即使您在 |
match_origin_as_fallback
|
Boolean |
如果为 true,则在 about:、data: 和 blob: 页面的来源与 matches 中的模式匹配时,即使文档来源不透明(由于使用了 CSP 或 iframe 沙箱),代码也会被注入。matches 中的匹配模式必须指定一个通配符路径 glob。默认为 false。 |
matches
|
Array |
这是唯一必需的键。 |
run_at
|
String |
此选项确定
默认值为 |
world
|
String |
脚本执行的 JavaScript 世界。
默认值为 |
加载顺序
content_scripts 中的已注册对象会在 run_at 指定的时间(先 document_start,然后 document_end,最后 document_idle)注入到匹配的网页中。
- 按照
content_scripts数组中指定的顺序,对于具有匹配的run_at值的每个对象,然后:- CSS 按其
css数组中指定的顺序应用。默认情况下,"author"来源的 CSS 具有优先权,除非css_origin设置为"user"。 - JavaScript 代码按其
js数组中指定的顺序执行。
- CSS 按其
例如,在此键规范中:
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["jquery.js", "my-content-script.js"],
"run_at": "document_idle"
},
{
"matches": ["*://*.mozilla.org/*"],
"css": ["my-css.css"],
"js": ["another-content-script.js", "yet-another-content-script.js"],
"run_at": "document_idle"
},
{
"matches": ["*://*.mozilla.org/*"],
"js": ["run-first.js"],
"run_at": "document_start"
}
]
当打开 mozilla.org 域时,文件按以下方式加载:
"run-first.js"- 因为它被请求在"document_start"运行。"jquery.js"- 因为它在第一个请求在"document_idle"运行的数组中。"my-content-script.js"- 因为它是第一个请求在"document_idle"运行的数组中的第二个项目。"my-css.css"- 因为对象的 CSS 在其 JavaScript 之前加载。"another-content-script.js"- 因为它是js属性中的第一个项目。"yet-another-content-script.js"
匹配 URL 模式
"content_scripts" 键根据 URL 匹配将内容脚本附加到文档:如果文档的 URL 与键中的规范匹配,则将附加该脚本。"content_scripts" 中有四个属性可用于此规范:
matches-
一个 匹配模式 数组
exclude_matches-
一个 匹配模式 数组
include_globs-
一个 glob 数组
exclude_globs-
一个 glob 数组
要匹配这些属性之一,URL 必须至少匹配其数组中的一个项目。例如,给定一个属性:
"matches": ["*://*.example.org/*", "*://*.example.com/*"]
http://example.org/ 和 http://example.com/ 都将匹配。
由于 matches 是唯一必需的键,因此其他三个键用于进一步限制匹配的 URL。要使整个键匹配,URL 必须:
- 匹配
matches属性 - 并且匹配
include_globs属性(如果存在) - 并且不匹配
exclude_matches属性(如果存在) - 并且不匹配
exclude_globs属性(如果存在)
globs
Glob 只是一个可能包含通配符的字符串。
有两种通配符,您可以在同一个 glob 中组合它们:
*匹配零个或多个字符?匹配正好一个字符。
例如:"*na?i" 将匹配 "illuminati" 和 "annunaki",但不匹配 "sagnarelli"。
示例
"content_scripts": [
{
"matches": ["*://*.mozilla.org/*"],
"js": ["borderify.js"]
}
]
这会将单个内容脚本 borderify.js 注入到 mozilla.org 或其任何子域下的所有页面中,无论它们是通过 HTTP 还是 HTTPS 提供。
"content_scripts": [
{
"exclude_matches": ["*://mdn.org.cn/*"],
"matches": ["*://*.mozilla.org/*"],
"js": ["jquery.js", "borderify.js"]
}
]
这会将两个内容脚本注入到 mozilla.org 或其任何子域下的所有页面中,但 developer.mozilla.org 除外,无论它们是通过 HTTP 还是 HTTPS 提供。
内容脚本看到 DOM 的视图相同,并且按照它们在数组中出现的顺序注入,因此 borderify.js 可以看到由 jquery.js 添加的全局变量。
浏览器兼容性
加载中…