自Firefox Australis界面以来,没有更多工具栏按钮只需单击一下即可切换书签和历史记录侧边栏。有“show sidebars”工具栏按钮,但它会显示一个动画弹出窗口,需要点击2次。
所以我正在尝试创建一个WebExtension来实现这些按钮。
sidebar_action
没有添加工具栏按钮,因此它排除了此方法。browser_action
。我做了很多事情但没有成功,例如:
SidebarUI.toggle("viewBookmarksSidebar");
,但没有定义SidebarUI对象。chrome://browser/content/bookmarks/bookmarksPanel.xul
网址,但我没有侧边栏来加载它。sidebar_action
和browser_action
,但这是不可能的。答案 0 :(得分:3)
WebExtensions无法满足您的需求。使用附加SDK或其他类型的旧版扩展程序很容易,但是使用WebExtensions无法实现这一点。
如果您希望以某种方式以编程方式打开侧边栏,则需要file a bug请求该功能。您还可以创建WebExtension Experiment,在安装WebExtension实验时将功能添加到WebExtensions API。 WebExtension实验不会自动集成到Firefox中,但它有可能存在。
答案 1 :(得分:3)
从Firefox 73开始,您可以简单地使用:
obj
如果您需要支持较旧的Firefox版本,尤其是ESR,则可以跟踪打开了哪个侧边栏。这是我为其中一个插件开发的方法,也是我所知道的唯一一种可在多个窗口中正常工作的方法。
在您的后台脚本中:
browser.browserAction.onClicked.addListener(() => {
browser.sidebarAction.toggle();
});
在侧边栏脚本中:
let openedSidebarWindows = {};
browser.runtime.onConnect.addListener(port => onConnect(port));
browser.browserAction.onClicked.addListener(tab => this.onClick(tab));
function onConnect(port) {
const windowId = parseInt(port.name);
openedSidebarWindows[windowId] = port;
port.onDisconnect.addListener(port => {
delete openedSidebarWindows[parseInt(port.name)];
});
}
function onClick({ windowId }) {
if (openedSidebarWindows[windowId] !== undefined) {
browser.sidebarAction.close();
} else {
browser.sidebarAction.open();
}
}