scripting.removeCSS()

移除通过调用 scripting.insertCSS() 注入的 CSS 样式表。

注意:此方法在 Chrome 的 Manifest V3 或更高版本以及 Firefox 101 中可用。在 Safari 和 Firefox 102+ 中,此方法在 Manifest V2 中也可用。

要使用此 API,您必须拥有 "scripting" 权限,并且拥有页面 URL 的权限,该权限可以明确地作为 主机权限,或者使用 activeTab 权限

这是一个异步函数,返回一个 Promise

语法

js
await browser.scripting.removeCSS(
  details       // object
)

参数

details

一个对象,描述要移除的 CSS 以及从何处移除。它包含以下属性:

css 可选

string。一个包含要注入的 CSS 的字符串。必须指定 cssfiles 之一,并且必须与通过 scripting.insertCSS() 插入的样式表匹配。

files 可选

array of string。要注入的 CSS 文件路径,相对于扩展程序的根目录。必须指定 filescss 之一,并且必须与通过 scripting.insertCSS() 插入的样式表匹配。

origin 可选

string。注入的样式来源,可以是 USERAUTHOR。默认为 AUTHOR。必须与通过 scripting.insertCSS() 插入的样式表的来源匹配。

目标

scripting.InjectionTarget。指定要从中移除 CSS 的目标的详细信息。

返回值

一个 Promise,在所有 CSS 都被移除后解析(不带参数)。如果发生任何错误,promise 将被拒绝。尝试移除不存在的样式表将被忽略。

示例

此示例使用 scripting.insertCSS 添加一些 CSS,然后在用户点击浏览器动作时再次将其移除。

js
// Assuming some style has been injected previously with the following code:
//
// await browser.scripting.insertCSS({
//   target: {
//     tabId: tab.id,
//   },
//   css: "* { background: #c0ffee }",
// });
//
// We can remove it when a user clicked an extension button like this:
browser.action.onClicked.addListener(async (tab) => {
  try {
    await browser.scripting.removeCSS({
      target: {
        tabId: tab.id,
      },
      css: "* { background: #c0ffee }",
    });
  } catch (err) {
    console.error(`failed to remove CSS: ${err}`);
  }
});

浏览器兼容性

注意:此 API 基于 Chromium 的 chrome.scripting API。