scripting.updateContentScripts()

更新已注册的内容脚本。如果在脚本解析和文件验证期间发生错误,或者指定的 ID 不存在,则不会更新任何脚本。

备注: 该方法在 Chrome 和 Firefox 101 的 Manifest V3 或更高版本中可用。在 Firefox 102+ 中,你也可以在 Manifest V2 中使用该方法。

要使用该方法,你必须取得 "scripting" 权限以及页面的 URL 权限,可以是明确的主机权限,也可以使用 activeTab 权限

这是一个返回 Promise 的异步函数。

语法

js
await browser.scripting.updateContentScripts(
  scripts         // 对象
)

参数

scripts

scripting.RegisteredContentScriptarray。要更新的脚本的信息。除了 id 属性外其他属性均为可选的。

返回值

Promise,将以 scripting.RegisteredContentScript 的数组兑现。如果发生任何错误,则该 promise 将被拒绝。

示例

该示例更新一个使用 ID a-script 注册的内容脚本:将其 allFrames 属性设置为 true

js
try {
  await browser.scripting.registerContentScripts([
    {
      id: "a-script",
      js: ["script.js"],
      matches: ["*://example.org/*"],
    },
  ]);

  // 更新之前注册的内容脚本让其在所有框架中执行:
  await browser.scripting.updateContentScripts([
    {
      id: "a-script",
      allFrames: true,
    },
  ]);
} catch (err) {
  console.error(`无法注册或更新内容脚本:${err}`);
}

浏览器兼容性

BCD tables only load in the browser

备注: 该 API 基于 Chromium 的 chrome.scripting API。