contentScripts.register()
使用此函数注册一个或多个内容脚本。
它接受一个参数,该参数是一个对象,其属性与 content_scripts
清单键中给出的对象类似(但请注意,content_scripts
是一个对象数组,而 register()
的参数是一个对象)。
这是一个异步函数,它返回一个 Promise
。
语法
let registering = browser.contentScripts.register(
contentScriptOptions // object
)
参数
contentScriptOptions
-
object
. 一个RegisteredContentScriptOptions
对象,表示要注册的内容脚本。它具有与content_scripts
清单键数组中的对象类似的语法。不同之处在于- 属性名使用 驼峰式命名法,而不是下划线 (蛇形命名法) - 例如,
excludeMatches
,而不是exclude_matches
。 js
和css
属性允许您注册字符串以及 URL,因此它们的语法必须区分这些类型。
RegisteredContentScriptOptions
对象具有以下属性allFrames
可选-
与
content_scripts
键中的all_frames
相同。 -
一个字符串或字符串数组。在属于一个或多个 Cookie 存储 ID 的选项卡中注册内容脚本。这使得可以为所有默认或非上下文身份选项卡、私人浏览选项卡(如果 扩展在私人浏览中启用)、上下文身份 的选项卡或这些选项卡的组合注册脚本。有关更多信息,请参见 使用上下文身份。
css
可选-
一个对象数组。每个对象都具有名为
file
的属性,该属性是扩展的 manifest.json 中的 URL,并指向要注册的 CSS 文件,或者具有名为code
的属性,该属性是要注册的 CSS 代码。 excludeGlobs
可选-
与
content_scripts
键中的exclude_globs
相同。 excludeMatches
可选-
与
content_scripts
键中的exclude_matches
相同。 includeGlobs
可选-
与
content_scripts
键中的include_globs
相同。 js
可选-
一个对象数组。每个对象都具有名为
file
的属性,该属性是扩展的 manifest.json 中的 URL,并指向要注册的 JavaScript 文件,或者具有名为code
的属性,该属性是要注册的 JavaScript 代码。 matchAboutBlank
可选-
与
content_scripts
键中的match_about_blank
相同。 matchOriginAsFallback
可选-
与
content_scripts
键中的match_origin_as_fallback
相同。 matches
-
与
content_scripts
键中的matches
相同。 runAt
可选-
与
content_scripts
键中的run_at
相同。 world
可选-
脚本要执行的执行环境。与
content_scripts
键中的world
相同。
- 属性名使用 驼峰式命名法,而不是下划线 (蛇形命名法) - 例如,
返回值
一个 Promise
,它将使用 contentScripts.RegisteredContentScript
对象来实现,您可以使用该对象注销内容脚本。
目前,内容脚本在相关扩展页面(从中注册内容脚本)卸载时注销,因此您应该从至少在您希望内容脚本保持注册的时间内持续存在的扩展页面注册内容脚本。
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。
示例
此示例为所有 .org
URL 注册 defaultCode
内容脚本
const defaultHosts = "*://*.org/*";
const defaultCode =
"document.body.innerHTML = '<h1>This page has been eaten<h1>'";
async function register(hosts, code) {
return await browser.contentScripts.register({
matches: [hosts],
js: [{ code }],
runAt: "document_idle",
});
}
let registered = register(defaultHosts, defaultCode);
此代码注册 content_scripts/example.js 中的 JS 文件
const scriptObj = await browser.contentScripts.register({
js: [{ file: "/content_scripts/example.js" }],
matches: ["<all_urls>"],
allFrames: true,
runAt: "document_start",
});