userScripts
使用此 API 注册用户脚本,这些用户脚本是用于操作网页或提供新功能的第三方脚本。注册用户脚本会指示浏览器将脚本附加到在注册期间指定的 URL 模式匹配的页面。
注意:这是新 API 版本的文档,在 Firefox 中适用于 Manifest V3。有关在 Firefox 中使用 Manifest V2 的 API 信息,请参阅 userScripts (旧版)。
此 API 提供了与 scripting 类似的功能,但增加了适合处理第三方脚本的功能。
Permissions
要使用此 API,您需要 `userScripts` 权限以及您希望运行脚本的网站的 host_permissions。但是,启用此 API 的方法在不同浏览器之间有所不同。
- 在 Firefox 中,`userScripts` 是在 `optional_permissions` manifest 键中声明的 仅可选权限。您的扩展必须通过检查 `userScripts` API 命名空间的可用性或使用
permissions.contains()来检查权限是否已授予,如果未授予,则使用permissions.request()请求它。 - 在 Chrome 中,`userScripts` 是在
permissionsmanifest 键中声明的安装时请求的权限。但是,要启用 API 的使用,用户必须 在 Chrome 中开启开发者模式。
执行环境
当用户脚本被注册或更新时(使用 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.onUserScriptMessage 和 runtime.onUserScriptConnect 来接收消息。使用专用处理程序是因为它们更容易识别来自用户脚本的消息,而用户脚本是信任度较低的上下文。
要启用消息传递 API,请在注册用户脚本之前,使用 `messaging` 参数设置为 `true` 调用 userScripts.configureWorld()。
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()-
将用户脚本注入目标上下文。
扩展程序示例
浏览器兼容性
加载中…