--- 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)是一个数组,每个项目都是一个满足下列条件的对象:
必须包含一个名为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,可以这样做:
接下来, 文件将在run_at指定的时间注入。 |
matches |
Array |
一个match patterns的数组,请参阅下面的匹配URL格式。 这是唯一的必须键。 |
run_at |
String |
此选项指定在“js”键中的脚本何时被注入。您可以使用下列的三个字符串之一,每个字符串都代表加载文档过程中的不同状态。状态直接对应于{{domxref("Document/readyState", "Document.readyState")}}:
默认值为“document_idle”。 |
“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。要匹配作为一个整体的键,网址必须:
exclude_matches
属性(如果有)exclude_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”添加的全局变量。
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("webextensions.manifest.content_scripts")}}