contentScripts.register()
使用此函数来注册一个或多个内容脚本。
它接受一个参数,该参数是一个对象,其属性与 content_scripts manifest 键中提供的对象相似(但请注意,content_scripts 是一个对象数组,而 register() 的参数是一个对象)。
扩展必须具有 contentScriptOptions 中模式的适当 主机权限,否则 API 调用将被拒绝。
语法
let registering = browser.contentScripts.register(
contentScriptOptions // object
)
参数
contentScriptOptions-
object。一个RegisteredContentScriptOptions对象,表示要注册的内容脚本。其语法与content_scriptsmanifest 键数组中的对象相似。区别在于:- 属性名使用 驼峰式命名,而不是下划线(蛇形命名)— 例如,
excludeMatches,而不是exclude_matches。 js和css属性允许你注册字符串以及 URL,因此它们的语法必须区分这些类型。
RegisteredContentScriptOptions对象具有以下属性:allFrames可选-
与
content_scripts键中的all_frames相同。 -
一个字符串或字符串数组。在属于一个或多个 cookie 存储 ID 的标签页中注册内容脚本。这使得脚本可以为所有默认或非情境身份标签页、私密浏览标签页(如果 扩展在私密浏览中启用)、情境身份 的标签页,或这些的组合进行注册。有关更多信息,请参阅 处理情境身份。
css可选-
一个对象数组。每个对象都有一个名为
file的属性,该属性是一个以扩展的 manifest.json 开始并指向要注册的 CSS 文件的 URL,或者有一个名为code的属性,该属性是要注册的 CSS 代码。 cssOrigin可选-
string。注入样式的来源,可以是"user",将 CSS 添加为用户样式表,或者"author",将其添加为作者样式表。默认为"author"。此属性不区分大小写。 excludeGlobs可选-
与
content_scripts键中的exclude_globs相同。 excludeMatches可选-
与
content_scripts键中的exclude_matches相同。 includeGlobs可选-
与
content_scripts键中的include_globs相同。 js可选-
一个对象数组。每个对象都有一个名为
file的属性,该属性是一个以扩展的 manifest.json 开始并指向要注册的 JavaScript 文件的 URL,或者有一个名为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 对象fulfilled,你可以使用该对象来取消注册内容脚本。
目前,当相关的扩展页面(从中注册了内容脚本)卸载时,内容脚本就会被取消注册,因此你应该从一个持续时间至少与你希望内容脚本保持注册状态一样长的扩展页面注册内容脚本。
示例
此示例为所有 .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 文件。
const scriptObj = await browser.contentScripts.register({
js: [{ file: "/content_scripts/example.js" }],
matches: ["<all_urls>"],
allFrames: true,
runAt: "document_start",
});
扩展程序示例
浏览器兼容性
加载中…