userScripts

使用此 API 注册用户脚本,这些用户脚本是用于操作网页或提供新功能的第三方脚本。注册用户脚本会指示浏览器将脚本附加到在注册期间指定的 URL 模式匹配的页面。

注意:这是新 API 版本的文档,在 Firefox 中适用于 Manifest V3。有关在 Firefox 中使用 Manifest V2 的 API 信息,请参阅 userScripts (旧版)

此 API 提供了与 scripting 类似的功能,但增加了适合处理第三方脚本的功能。

Permissions

要使用此 API,您需要 `userScripts` 权限以及您希望运行脚本的网站的 host_permissions。但是,启用此 API 的方法在不同浏览器之间有所不同。

执行环境

当用户脚本被注册或更新时(使用 userScripts.register()userScripts.update()),您的扩展可以将其设置为在隔离的 `USER_SCRIPT` 环境或 `MAIN` 环境中运行。

`USER_SCRIPT` 环境提供了一个隔离的执行环境,主机页面或其他扩展无法访问。这种隔离类似于 内容脚本环境,只是 `USER_SCRIPT` 环境无法访问扩展 API。

用户脚本可以通过设置 RegisteredUserScript 的 `worldId` 属性来共享 `USER_SCRIPT` 环境,或将其自身隔离在 `USER_SCRIPT` 环境中。该 API 使扩展能够使用 userScripts.configureWorld() 为 `USER_SCRIPT` 环境配置内容安全策略 (CSP)。

在 `MAIN` 环境中,主机页面和其他扩展可以看到并访问正在运行的用户脚本。`worldId` 属性不适用于 `MAIN` 环境。

这些执行环境值定义在 ExecutionWorld 中。

消息

像内容脚本和其他扩展脚本一样,用户脚本使用消息与扩展的其他部分进行通信,使用 runtime.sendMessage()runtime.connect()。但是,扩展使用专用的 runtime.onUserScriptMessageruntime.onUserScriptConnect 来接收消息。使用专用处理程序是因为它们更容易识别来自用户脚本的消息,而用户脚本是信任度较低的上下文。

要启用消息传递 API,请在注册用户脚本之前,使用 `messaging` 参数设置为 `true` 调用 userScripts.configureWorld()

js
browser.userScripts.configureWorld({
  messaging: true,
});

扩展更新

当扩展更新时,用户脚本会被清除。要恢复脚本,请在扩展的 runtime.onInstalled 事件处理程序中添加响应 `"update"` 原因的代码。

类型

userScripts.ExecutionWorld

使用 userScripts.register()userScripts.update() 注入脚本的执行环境。

userScripts.RegisteredUserScript

getScripts() 返回的 `object`,表示已注册的用户脚本,并用作 register()update() 的输入。

userScripts.ScriptSource

用户脚本的代码或文件源。

userScripts.UserScriptFilter

userScripts.getScripts()userScripts.unregister() 处理的用户脚本列表。

userScripts.WorldProperties

`USER_SCRIPT` 执行环境的配置。

方法

userScripts.configureWorld()

为扩展配置 `USER_SCRIPT` 执行环境。

userScripts.getScripts()

返回扩展注册的用户脚本。

userScripts.getWorldConfigurations()

返回扩展注册的所有环境配置。

userScripts.register()

为扩展注册用户脚本。

userScripts.resetWorldConfiguration()

重置扩展注册的 `USER_SCRIPT` 环境的配置。

userScripts.unregister()

取消注册扩展注册的用户脚本。

userScripts.update()

更新扩展注册的用户脚本。

userScripts.execute()

将用户脚本注入目标上下文。

扩展程序示例

浏览器兼容性

另见