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。