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);
});
浏览器兼容性
Loading…
备注:
此 API 基于 Opera 的 chrome.sidebarAction API。