侧边栏

侧边栏是浏览器窗口的侧边窗格,显示在网页旁边。本文档介绍了侧边栏,包括如何指定、设计以及使用示例。

浏览器提供了一个用户界面,允许用户选择要显示的侧边栏。例如,Firefox 有“查看”>“侧边栏”菜单。每个浏览器窗口都可以显示自己的侧边栏,该侧边栏在窗口中的所有标签页中都会显示。

浏览器可能包含一些内置的侧边栏。例如,Firefox 包含一个用于与书签交互的侧边栏。

Annotator sidebar with a box allowing the user to take notes about the page.

通过使用 `sidebar_action` manifest.json 键,扩展程序可以将其自己的侧边栏添加到浏览器中。它将与内置侧边栏一起列出,用户将能够使用与内置侧边栏相同的机制打开它。

与浏览器操作弹出窗口一样,侧边栏的内容指定为一个 HTML 文档。当用户打开侧边栏时,侧边栏文档将被加载到所有打开的浏览器窗口中。每个窗口都有自己的文档实例。当打开新窗口时,它们也会获得自己的侧边栏文档。

可以使用 sidebarAction.setPanel() 函数为特定标签页设置文档。侧边栏可以使用 windows.getCurrent() API 来确定它属于哪个窗口。

js
// sidebar.js
browser.windows.getCurrent({ populate: true }).then((windowInfo) => {
  myWindowId = windowInfo.id;
});

这在侧边栏希望为不同窗口显示不同内容时很有用。有关示例,请参阅 “annotate-page”示例

侧边栏文档可以访问与扩展的后台脚本和弹出脚本相同的特权 JavaScript API 集合。它们可以通过 runtime.getBackgroundPage() 直接访问后台页面(除非侧边栏属于隐身模式窗口),并且可以使用消息传递 API(如 tabs.sendMessage()runtime.sendNativeMessage())与内容脚本或本机应用程序进行交互。

当浏览器窗口关闭或用户关闭侧边栏时,侧边栏文档将被卸载。这意味着与后台页面不同,侧边栏文档不会一直加载,但与浏览器操作弹出窗口不同,当用户与网页交互时,它们会保持加载状态。

当首次安装定义侧边栏的扩展时,其侧边栏将自动打开。这是为了帮助用户了解该扩展包含侧边栏。

指定侧边栏

要指定侧边栏,请使用 `sidebar_action` manifest.json 键定义默认文档,以及默认标题和图标。

json
"sidebar_action": {
  "default_title": "My sidebar",
  "default_panel": "sidebar.html",
  "default_icon": "sidebar_icon.png"
}

标题、面板和图标可以使用 sidebarAction API 以编程方式更改。

标题和图标会显示给用户,用于浏览器提供的任何列出侧边栏的 UI,例如 Firefox 中的“查看 > 侧边栏”菜单。

有关如何设计侧边栏网页以匹配 Firefox 风格的详细信息,请参阅 Acorn 设计系统文档。

示例

GitHub 上的 webextensions-examples 存储库包含实现侧边栏的 annotate-page 示例。