userScripts

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

备注:本文档针对的是旧版 API,仅适用于 Firefox 中的 Manifest V2。一种新的 API 已经设计完毕,参见 WECG issue 279。新版 API 将适用于 Firefox 中的 Manifest V3。开发进度可在 Firefox bug 1875475 处跟踪。Chrome 已包含了这一新 API 的实现。同时,当使用 Manifest V3 或更高版本时,请使用 scripting.registerContentScripts() 来注册脚本。

此 API 提供类似 contentScripts 的功能,但包含一些专为处理第三方脚本而设计的特性:

  • 在隔离的沙箱中执行:每个用户脚本都在网页内容进程中的隔离沙箱中运行,避免脚本之间的意外或故意干扰。
  • 访问与附加了用户脚本的网页相关的 windowdocument 全局值。
  • 不可访问 WebExtension API 以及授予扩展的相关权限:API 脚本继承扩展的权限,可以向注册的用户脚本提供打包的 WebExtension API。API 脚本需要在扩展的清单文件中通过“user_scripts”键声明。

警告:即使未指定 API 脚本,此 API 仍需要在 manifest.json 中包含“user_scripts”键。例如:user_scripts: {}

要使用该 API,请调用 register() 方法,传入一个定义要注册的脚本的对象。该方法将返回一个 Promise,其将以 RegisteredUserScript 对象的形式兑现。

备注:用户脚本在相关的扩展页面(从中注册了用户脚本)被卸载时会被注销,因此应该从至少与用户脚本的有效期相当的扩展页面注册用户脚本。

类型

userScripts.RegisteredUserScript

register() 方法返回的对象表示已注册的用户脚本,并可用于取消注册用户脚本。

方法

userScripts.register()

注册用户脚本。

事件

userScripts.onBeforeScript

可用于 API 脚本的事件,在 "user_scripts" 中注册,并将在用户脚本执行前执行。该事件可用来触发 API 脚本提供的附加 API 的导出,以便用户脚本访问这些 API。

浏览器兼容性

BCD tables only load in the browser

参见