API

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

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

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

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

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

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

js
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() (en-US)setInterval() (en-US),不过这些函数仅可以按需使用而不能在后台页面工作。

bookmarks

WebExtensions bookmarks API 允许一个附加组件和浏览器的书签系统交互和操作。你可以用它给页面加书签,获取已有的书签,以及编辑,移除和管理书签。

browserAction

添加按钮到浏览器的工具栏。

clipboard

WebExtention 的 clipboard API 增加了一个将图像复制到剪贴板的函数。目前,这个 API 仅支持复制图像,但我们期望它未来支持复制文本和 HTML(译者注:原文如此,可能是指被支持复制富内容之后的标准剪贴板 API 取代)。

contentScripts

使用此 API 以注册内容脚本。“注册内容脚本”意味着浏览器会将给定的内容脚本插入到每个与给定的 URL 模式相匹配的页面中。

contextMenus

在浏览器菜单中添加条目。此 API 基于 Chrome 的“contextMenus”API 构建,该 API 可让 Chrome 扩展程序将项目添加到浏览器的上下文菜单中。 browser.menus API 为 Chrome 的 API 添加了一些功能,特别是可以将项目添加到浏览器的“工具”菜单以及上下文菜单中。在 Firefox 55 之前,这个 API 最初也被命名为contextMenus,并且这个名字被保留为别名,所以你可以使用contextMenus编写在 Firefox 和其他浏览器中工作的代码。你需要拥有“menus”(或别名" contextMenus ")权限来使用此 API。

cookies

使用 WebExtensions 获取或设置 cookies, 并且在修改时能够获得通知。

downloads

启用与浏览器的下载管理器交互的扩展。你可以使用这个 API 模块来下载文件、取消、暂停、恢复下载和在文件管理器中显示下载的文件。

find

在网页中查找文本,并突出显示匹配项。

history

使用 history API 与浏览器历史记录进行交互。

i18n

国际化扩展的函数。你可以使用这些 api 从与扩展打包在一起的本地化文件中获取本地化字符串,查找浏览器的当前语言,并查找其 Accept-Language header头的值。

idle

找出用户系统何时处于空闲,锁定或活动状态。

proxy

使用 proxy API 来代理 web 请求。你可以使用 proxy.onRequest 事件监听器来拦截 web 请求,并且返回一个可以描述是否代理并且怎样代理它们的对象。

runtime

该模块提供关于附加组件以及运行环境的信息。

storage

使浏览器扩展能够储存及获取数据,以及监听储存的数据的变化。

tabs

与浏览器标签系统进行交互。

webRequest

为发出的 HTTP 请求在不同阶段添加事件监听器。事件监听器可以接收到请求的详细信息,也可以修改或取消请求。

windows

与浏览器窗口互动。你可以使用此 API 获取有关已打开窗口的信息,以及打开、修改和关闭窗口。你也可以监听窗口的打开、关闭和其激活事件。