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。

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Firefox for Android
Safari on iOS
RegisteredUserScript
RegisteredUserScript.unregister
onBeforeScript
register
register.cookieStoreId

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

参见