sidebarAction.setPanel()

設定側邊欄的面板:即,定義側邊欄內容的 HTML 文件。

面板型別

側邊欄始終有一個“清單面板”,它是 [sidebar_action] manifest 鍵中定義的面板。

如果您使用 setPanel() 設定新面板,幷包含 tabId 選項,則該面板僅為指定的標籤頁設定。此面板稱為“標籤頁特定面板”

如果您使用 setPanel() 設定新面板,幷包含 windowId 選項,則該面板僅為指定的視窗設定。此面板稱為“視窗特定面板”,並且會顯示在該視窗中未設定標籤頁特定面板的所有標籤頁上。

如果您使用 setPanel() 設定新面板,並省略 tabIdwindowId 選項,則會設定“全局面板”。全局面板將顯示在所有未設定標籤頁特定面板且其視窗未設定視窗特定面板的標籤頁上。

語法

js
browser.sidebarAction.setPanel(
  details // object
)

引數

details

object。一個具有以下屬性的物件。

panel

stringnull。要載入到側邊欄的面板,指定為指向 HTML 文件的 URL,或 null,或空字串。

這可以指向打包在擴充套件程式中的檔案(例如,使用 [runtime.getURL] 建立的檔案),也可以指向遠端文件(例如 https://example.org/)。它必須是一個有效的 URL。

如果 panelnull"",則先前設定的面板將被移除,以便

  • 如果指定了 tabId,並且該標籤頁已設定了標籤頁特定面板,則該標籤頁將繼承其所屬視窗的面板。
  • 如果指定了 windowId,並且該視窗已設定了視窗特定面板,則該視窗將繼承全局面板。
  • 否則,全局面板將重置為清單面板。
tabId 可選

integer。僅為指定的標籤頁設定面板。

windowId 可選

integer。僅為指定的視窗設定面板。

  • 如果同時指定了 windowIdtabId,則函式失敗,面板未設定。
  • 如果同時省略了 windowIdtabId,則會設定全局面板。

示例

此程式碼在使用者單擊瀏覽器操作時切換側邊欄文件

js
let thisPanel = browser.runtime.getURL("/this.html");
let thatPanel = browser.runtime.getURL("/that.html");

function toggle(panel) {
  if (panel === thisPanel) {
    browser.sidebarAction.setPanel({ panel: thatPanel });
  } else {
    browser.sidebarAction.setPanel({ panel: thisPanel });
  }
}

browser.browserAction.onClicked.addListener(() => {
  browser.sidebarAction.getPanel({}).then(toggle);
});

瀏覽器相容性

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