sidebarAction.setIcon()

设置侧边栏的图标。

您可以将单个图标指定为图像文件的路径,或者指定为 sidebarAction.ImageDataType 对象。

通过提供包含多个路径或 ImageData 对象的字典,您可以指定不同尺寸的多个图标。这意味着图标不必为具有不同像素密度的设备进行缩放。

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

图标类型

您的扩展程序应在 sidebar_action manifest 键中为侧边栏指定一个图标。这被称为“manifest 图标”

如果您未在 sidebar_action 键中指定图标,则会显示浏览器的默认图标。这被称为“默认图标”

如果您使用 setIcon() 设置了新图标,并包含了 tabId 选项,则该图标仅为给定的标签页设置。此图标被称为“标签页特定图标”

如果您使用 setIcon() 设置了新图标,并包含了 windowId 选项,则该图标仅为给定的窗口设置。此图标被称为“窗口特定图标”,并且将显示在该窗口中所有未设置标签页特定图标的标签页上。

如果您使用 setIcon() 设置了新图标,并省略了 tabIdwindowId 选项,则会设置“全局图标”。全局图标将显示在所有未设置标签页特定图标且其窗口未设置窗口特定图标的标签页上。

语法

js
let settingIcon = browser.sidebarAction.setIcon(
  details         // object
)

参数

details

object。一个具有以下属性的对象。

imageData 可选

sidebarAction.ImageDataTypeobject。这可以是单个 ImageData 对象,也可以是字典对象。

使用字典对象指定不同尺寸的多个 ImageData 对象,这样图标就不必为具有不同像素密度的设备进行缩放。如果 imageData 是字典,则每个属性的值是一个 ImageData 对象,其名称是其尺寸,如下所示:

js
let settingIcon = browser.sidebarAction.setIcon({
  imageData: {
    16: image16,
    32: image32,
  },
});

浏览器将根据屏幕的像素密度选择要使用的图像。有关详细信息,请参阅 选择图标尺寸

path 可选

stringobject。这可以是图标文件的相对路径,也可以是字典对象。

使用字典对象指定不同尺寸的多个图标文件,这样图标就不必为具有不同像素密度的设备进行缩放。如果 path 是字典,则每个属性的值是一个相对路径,其名称是其尺寸,如下所示:

js
let settingIcon = browser.sidebarAction.setIcon({
  path: {
    16: "path/to/image16.jpg",
    32: "path/to/image32.jpg",
  },
});

浏览器将根据屏幕的像素密度选择要使用的图像。有关详细信息,请参阅 选择图标尺寸

如果 path 是空字符串,浏览器将使用默认图标。

如果 path 不为空但未指向图标文件,则图标将被隐藏。

如果 pathnull,并且指定了 tabId,并且指定的标签页设置了标签页特定图标:则将该标签页的特定图标重置为全局图标(如果设置了全局图标)或 manifest 图标。

如果 pathnull,省略了 tabId,并且设置了全局图标,则将其重置为 manifest 图标。

tabId 可选

integer。仅为给定的标签页设置图标。

windowId 可选

integer。仅为给定的窗口设置图标。

  • 如果同时指定了 windowIdtabId,则函数将失败,并且不会设置图标。
  • 如果同时省略了 windowIdtabId,则图标将全局设置。

返回值

一个 Promise,一旦设置了图标,它将以无参数的形式履行。

示例

下面的代码在用户点击浏览器操作时,切换活动标签页的侧边栏图标。

js
let on = false;

function toggle(tab) {
  if (on) {
    browser.sidebarAction.setIcon({
      path: "off.svg",
      tabId: tab.id,
    });
    on = false;
  } else {
    browser.sidebarAction.setIcon({
      path: "on.svg",
      tabId: tab.id,
    });
    on = true;
  }
}

browser.browserAction.onClicked.addListener(toggle);

浏览器兼容性

注意:此 API 基于 Opera 的 chrome.sidebarAction API。