API

WebExtension JavaScript API 可以在附加组件的后台脚本和附加组件定义的任何浏览器动作页面动作中使用。这里的部分API也可以通过附加组件的内容脚本访问(见内容脚本指南列表)。

要使用更强大的 API,您需要在您的 manifest.json 中申请权限

您可以使用 browser 命名空间访问这些 API。

function logTabs(tabs) {
  console.log(tabs);
}

browser.tabs.query({currentWindow: true}, logTabs);

许多 API 为异步,返回一个 Promise

function logCookie(c) {
  console.log(c);
}

function logError(e) {
  console.error(e);
}

var setCookie = browser.cookies.set(
  {url: "https://developer.mozilla.org/"}
);
setCookie.then(logCookie, logError);

请注意,这不同于 Google Chrome 的扩展系统,它使用 chrome 而非 browser 名字空间,并且对异步函数使用回调而不是 promises。为辅助移植,Firefox 实现的 WebExtensions 支持 chrome 和回调以及 browser 和 promises。Mozilla 也写了一个 polyfill 使使用 browser 和 promises 的代码能不经修改的在 Chrome 中使用:https://github.com/mozilla/webextension-polyfill

微软 Edge 使用 browser 名字空间,但尚不支持基于 promise 的异步API。目前在 Edge 中,异步 API 必须使用回调。

并非所有浏览器都支持这里的所有 API:详情见浏览器对 JavaScript API 的支持

alarms
在未来一个特定的时间运行的计划任务代码。这很像setTimeout()setInterval(),不过这些函数仅可以按需使用而不能在后台页面工作。
bookmarks
WebExtensions bookmarks API允许一个附加组件和浏览器的书签系统交互和操作。您可以用它给页面加书签,获取已有的书签,以及编辑,移除和管理书签。
browserAction
添加按钮到浏览器的工具栏。
contextMenus
使用 menus.create()方法创建一个菜单项。你需要传递一个包含条目选项的对象,它包括条目的id,类型,和需要显示出来的文本值。
cookies
使用 WebExtensions 获取或设置 cookies, 并且在修改时能够获得通知。
devtools.inspectedWindow
The devtools.inspectedWindow API lets a devtools extension interact with the window that the developer tools are attached to.
downloads
Enables extensions to interact with the browser's download manager. You can use this API module to download files, cancel, pause, resume downloads, and show downloaded files in the file manager.
history
使用 history API与浏览器历史记录进行交互。
idle
找出用户系统何时处于空闲,锁定或活动状态。
runtime
该模块提供关于附加组件以及运行环境的信息。
storage
此存储系统API基于 Web Storage API, 并有少许不同。
tabs
与浏览器标签系统进行交互。
webNavigation
Add event listeners for the various stages of a navigation. A navigation consists of a frame in the browser transitioning from one URL to another, usually (but not always) in response to a user action like clicking a link or entering a URL in the location bar.
webRequest
每个事件都会在请求的特定阶段触发。事件的顺序大概是这样的:
windows
与浏览器窗口互动。您可以使用此 API 获取有关已打开窗口的信息,以及打开、修改和关闭窗口。您也可以监听窗口的打开、关闭和其激活事件。
剪切板