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。