sidebarAction.setPanel()
设置侧边栏的面板:即定义此侧边栏内容的 HTML 文档。
面板类型
侧边栏总是有一个“清单面板”,即在 sidebar_action
清单键中定义的面板。
如果使用 setPanel()
设置新面板,并包含 tabId
选项,则该面板仅为给定的标签页设置。这个面板称为“标签页特定面板”。
如果使用 setPanel()
设置新面板,并包含 windowId
选项,则该面板仅为给定的窗口设置。这个面板称为“窗口特定面板”,并将出现在该窗口的所有没有设置标签页特定面板的标签页中。
如果使用 setPanel()
设置新面板,并省略 tabId
和 windowId
选项,则这将设置“全局面板”。全局面板将出现在所有没有设置标签页特定面板,且其窗口没有设置窗口特定面板的标签中。
语法
js
browser.sidebarAction.setPanel(
details // 对象
)
参数
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 tables only load in the browser
备注:
此 API 基于 Opera 的 chrome.sidebarAction
API。