sidebarAction.setIcon()
设置侧边栏的图标。
您可以将单个图标指定为图像文件的路径或sidebarAction.ImageDataType
对象。
您可以通过提供包含多个路径或ImageData
对象的字典来指定不同尺寸的多个图标。这意味着图标不必针对具有不同像素密度的设备进行缩放。
这是一个异步函数,它返回一个Promise
。
图标类型
您的扩展应该在sidebar_action
清单键中为侧边栏指定一个图标。这称为“清单图标”。
如果未在sidebar_action
键中指定图标,则会显示浏览器的默认图标。这称为“默认图标”。
如果使用setIcon()
设置新图标,并包含tabId
选项,则该图标仅为给定选项卡设置。此图标称为“特定于选项卡的图标”。
如果使用setIcon()
设置新图标,并包含windowId
选项,则该图标仅为给定窗口设置。此图标称为“特定于窗口的图标”,它将出现在该窗口中所有未设置特定于选项卡的图标的选项卡中。
如果使用setIcon()
设置新图标,并且省略了tabId
和windowId
选项,则会设置“全局图标”。然后,全局图标将出现在所有未设置特定于选项卡的图标且其窗口未设置特定于窗口的图标的选项卡中。
语法
let settingIcon = browser.sidebarAction.setIcon(
details // object
)
参数
details
-
object
。具有以下属性的对象imageData
可选-
或sidebarAction.ImageDataType
object
。这既可以是单个ImageData
对象,也可以是字典对象。使用字典对象以不同尺寸指定多个
ImageData
对象,以便图标不必针对具有不同像素密度的设备进行缩放。如果imageData
是字典,则每个属性的值都是一个ImageData
对象,其名称是其大小,如下所示jslet settingIcon = browser.action.setIcon({ imageData: { 16: image16, 32: image32, }, });
浏览器将根据屏幕的像素密度选择要使用的图像。有关此内容的更多信息,请参阅选择图标大小。
path
可选-
string
或object
。这既可以是图标文件的相对路径,也可以是字典对象。使用字典对象以不同尺寸指定多个图标文件,以便图标不必针对具有不同像素密度的设备进行缩放。如果
path
是字典,则每个属性的值都是一个相对路径,其名称是其大小,如下所示jslet settingIcon = browser.action.setIcon({ path: { 16: "path/to/image16.jpg", 32: "path/to/image32.jpg", }, });
浏览器将根据屏幕的像素密度选择要使用的图像。有关此内容的更多信息,请参阅选择图标大小。
如果
path
为空字符串,则浏览器将使用默认图标。如果
path
不为空但未指向图标文件,则图标将隐藏。如果
path
为null
,并且指定了tabId
,并且指定的选项卡已设置特定于选项卡的图标:则特定于选项卡的图标将重置为全局图标(如果设置了全局图标)或清单图标。如果
path
为null
,并且省略了tabId
,并且已设置全局图标,则它将重置为清单图标。 tabId
可选-
integer
。仅为给定选项卡设置图标。 windowId
可选-
integer
。仅为给定窗口设置图标。
- 如果同时指定了
windowId
和tabId
,则函数将失败,并且不会设置图标。 - 如果同时省略了
windowId
和tabId
,则全局设置图标。
返回值
一个Promise
,一旦图标设置完成,它将不带任何参数完成。
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。
示例
以下代码在用户单击浏览器操作时切换活动选项卡的侧边栏图标
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。