userScripts.register()

此方法允许从扩展页面(例如后台页面)注册用户脚本。

此方法与 contentScripts.register() API 方法非常相似(例如,它们都返回一个 promise,该 promise 解析为一个 API 对象,该对象具有一个用于注销脚本的 unregister() 方法)。但是,支持的选项存在差异。

这是一个异步方法,它返回一个 Promise

语法

js
const registeredUserScript = await browser.userScripts.register(
  userScriptOptions       // object
);
// …
await registeredUserScript.unregister();

参数

userScriptOptions

object。表示要注册的用户脚本。它具有与 contentScripts.register() 相似的语法。

UserScriptOptions 对象具有以下属性

scriptMetadata 可选

一个包含与注册用户脚本关联的任意元数据属性的 JSON 对象。但是,虽然是任意的,但该对象必须是可序列化的,因此它与 结构化克隆算法。 此元数据用于将脚本中的详细信息传递到 API 脚本。例如,提供 API 脚本 需要注入的 API 子集的详细信息。API 不使用此元数据,

allFrames 可选

content_scripts 键中的 all_frames 相同。

cookieStoreId 可选

一个 cookie 存储 ID 字符串数组或包含 cookie 存储 ID 的字符串。在属于 cookie 存储 ID 的选项卡中注册用户脚本。这使得可以为所有默认或非上下文标识选项卡、私密浏览选项卡(如果 扩展在私密浏览中启用)、上下文标识 的选项卡或这些选项卡的组合注册脚本。

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 相同。

matches

content_scripts 键中的 matches 相同。matches 中提供的 URL 模式必须由清单中定义的主机权限启用 permission 属性或由用户从 optional_permissions 列表中启用。例如,如果 matches 包含 https://mozilla.org/a,则只有在主机权限包含(例如)https://mozilla.org/* 时才会注册脚本。如果 URL 模式未启用,则注册调用将失败并出现错误“Permission denied to register a user script for ORIGIN”。

runAt 可选

content_scripts 键中的 run_at 相同。

与内容脚本选项不同,userScriptOptions 对象没有 CSS 属性。使用 contentScripts.register() 动态注册和注销样式表。

返回值

一个 Promise,它会解析为一个 RegisteredUserScript 对象,用于注销用户脚本。

注意:当相关扩展页面(从中注册用户脚本)卸载时,用户脚本将被注销,因此你应该从至少与你希望用户脚本保持注册的时间一样长的扩展页面注册用户脚本。

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅