sidebarAction.setPanel()
设置侧边栏的面板:即定义此侧边栏内容的 HTML 文档。
面板类型
侧边栏始终具有一个“清单面板”,该面板是在 sidebar_action
清单键中定义的面板。
如果您使用 setPanel()
设置新面板,并且包含 tabId
选项,则该面板仅针对给定选项卡设置。此面板被称为“特定于选项卡的面板”。
如果您使用 setPanel()
设置新面板,并且包含 windowId
选项,则该面板仅针对给定窗口设置。此面板被称为“特定于窗口的面板”,并且将显示在该窗口中所有未设置特定于选项卡的面板的选项卡中。
如果您使用 setPanel()
设置新面板,并且省略了 tabId
和 windowId
选项,则这将设置“全局面板”。全局面板将显示在所有未设置特定于选项卡的面板并且其窗口没有设置特定于窗口的面板的选项卡中。
语法
js
browser.sidebarAction.setPanel(
details // object
)
参数
details
-
object
。具有以下属性的对象panel
-
string
或null
。要加载到侧边栏的面板,指定为指向 HTML 文档的 URL,或null
,或空字符串。这可以指向打包在扩展中的文件(例如,使用
runtime.getURL
创建),或远程文档(例如https://example.org/
)。它必须是有效的 URL。如果
panel
为null
或""
,则将删除先前设置的面板,因此- 如果指定了
tabId
,并且选项卡已设置特定于选项卡的面板,则该选项卡将从其所属的窗口继承面板。 - 如果指定了
windowId
,并且窗口已设置特定于窗口的面板,则该窗口将继承全局面板。 - 否则,全局面板将重置为清单面板。
- 如果指定了
tabId
可选-
integer
。仅针对给定选项卡设置面板。 windowId
可选-
integer
。仅针对给定窗口设置面板。
- 如果同时指定了
windowId
和tabId
,则该函数将失败,并且不会设置面板。 - 如果同时省略了
windowId
和tabId
,则将设置全局面板。
示例
此代码在用户单击浏览器操作时切换侧边栏文档
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);
});
浏览器兼容性
BCD 表仅在浏览器中加载
注意:此 API 基于 Opera 的 chrome.sidebarAction
API。