此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
userScripts
使用此 API 注册用户脚本,即那些设计用于操作网页或提供新特性的第三方脚本。注册用户脚本会指示浏览器将脚本附加到与注册期间指定的 URL 模式匹配的页面上。
备注:
本文档针对新版 API 编写,适用于 Firefox Manifest V3 版本。参见 userScripts(旧版)以获取有关可用于 Firefox Manifest V2 的 API。
此 API 提供类似 scripting 的功能,但包含一些专为处理第三方脚本而设计的特性。
权限
要使用此 API,你需要 userScripts 权限以及你想要运行脚本的站点的 host_permissions。但是,允许使用此 API 的方法因浏览器而异:
- 在 Firefox 中,
userScripts是在optional_permissions清单键中声明的仅限可选权限。你的扩展必须通过检查userScriptsAPI 命名空间是否存在或使用permissions.contains()来检查是否被授予该权限,如果没有授予,请使用permissions.request()来请求它。 - 在 Chrome 中,
userScripts是声明在permissions清单键中的安装时请求的权限。但是,要启用此 API,用户必须在 Chrome 中启用开发者环境。
运行环境
当用户脚本被注册或更新(使用 userScripts.register() 或 userScripts.update())时,你的扩展可以将其设置为在隔离的 USER_SCRIPT 环境(world)或 MAIN 环境中运行。
USER_SCRIPT 环境提供了隔离的运行环境,无法访问宿主页面和其他扩展。这种隔离与内容脚本环境类似,除了 USER_SCRIPT 环境不能访问扩展 API。
用户脚本可以共享 USER_SCRIPT 环境,也可以通过设置 RegisteredUserScript 的 worldId 属性将自己隔离在 USER_SCRIPT 环境中。此 API 允许扩展使用 userScripts.configureWorld() 配置 USER_SCRIPT 环境的内容安全策略(CSP)。
在 MAIN 环境中,宿主页面和其他扩展可以访问正在运行的用户脚本。MAIN 环境不支持 worldId 属性。
这些执行环境的值定义于 ExecutionWorld 中。
消息
与内容脚本和其他扩展脚本类似,用户脚本通过 runtime.sendMessage() 和 runtime.connect() 使用消息来与扩展的其他部分通信。但是,扩展使用专用的 runtime.onUserScriptMessage 和 runtime.onUserScriptConnect 来接收消息。专用的处理器使得来自用户脚本(更不受信的上下文)的消息更易被识别。
要启用消息 API,在注册用户脚本之前,请调用 userScripts.configureWorld() 并将 messaging 参数设置为 true。
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()-
更新由扩展注册的用户脚本。
示例扩展
浏览器兼容性
Loading...