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()
(en-US)和setInterval()
(en-US),不过这些函数仅可以按需使用而不能在后台页面工作。- bookmarks
此WebExtensions
bookmarks
API 允许一个附加组件和浏览器的书签系统交互和操作。你可以用它给页面加书签,获取已有的书签,以及编辑,移除和管理书签。- browserAction
添加按钮到浏览器的工具栏。
- clipboard
WebExtention 的
clipboard
API 增加了一个将图像复制到剪贴板的函数。目前,这个 API 仅支持复制图像,但我们期望它未来支持复制文本和 HTML(译者注:原文如此,可能是指被支持复制富内容之后的标准剪贴板 API 取代)。- contentScripts
使用此 API 以注册内容脚本。“注册内容脚本”意味着浏览器会将给定的内容脚本插入到每个与给定的 URL 模式相匹配的页面中。
在浏览器菜单中添加条目。此 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 请求。你可以使用
事件监听器来拦截 web 请求,并且返回一个可以描述是否代理并且怎样代理它们的对象。proxy.onRequest
- runtime
该模块提供关于附加组件以及运行环境的信息。
- storage
使浏览器扩展能够储存及获取数据,以及监听储存的数据的变化。
- tabs
与浏览器标签系统进行交互。
- webRequest
为发出的 HTTP 请求在不同阶段添加事件监听器。事件监听器可以接收到请求的详细信息,也可以修改或取消请求。
- windows
与浏览器窗口互动。你可以使用此 API 获取有关已打开窗口的信息,以及打开、修改和关闭窗口。你也可以监听窗口的打开、关闭和其激活事件。