JavaScript API

WebExtensions 的 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);
}

let setCookie = browser.cookies.set({ url: "https://mdn.org.cn/" });
setCookie.then(logCookie, logError);

浏览器 API 差异

请注意,这与 Google Chrome 的扩展系统不同,后者使用 chrome 命名空间而不是 browser,并且对于异步函数使用回调而不是 Promise。作为移植辅助工具,WebExtensions API 的 Firefox 实现支持 chrome 和回调以及 browser 和 Promise。Mozilla 还编写了一个 polyfill,使使用 browser 和 Promise 的代码可以在 Chrome 中保持不变:https://github.com/mozilla/webextension-polyfill

Firefox 还使用回调在 chrome 命名空间下实现这些 API。这允许为 Chrome 编写的代码在 Firefox 中针对此处记录的 API 基本上保持不变地运行。

Microsoft Edge 使用 browser 命名空间,但尚未支持基于 Promise 的异步 API。在 Edge 中,目前异步 API 必须使用回调。

并非所有浏览器都支持所有 API:有关详细信息,请参阅 浏览器对 JavaScript API 的支持Chrome 不兼容性

示例

在 JavaScript API 列表中,简短的代码示例说明了如何使用 API。您可以使用 工具箱 中的控制台试用大多数这些示例。但是,您需要在 Web 扩展的上下文中运行工具箱。为此,请打开 about:debugging,然后打开此 Firefox,针对任何已安装或临时的扩展单击检查,然后打开控制台。然后,您可以在控制台中粘贴并运行示例代码。

例如,以下是此页面上第一个代码示例在 Firefox 开发版中的工具箱控制台中运行的情况

Illustration of a snippet of web extension code run from the console in the Toolbox

JavaScript API 列表

请参见以下 JavaScript API 的完整列表

action

读取和修改属性,并侦听使用 action 清单键定义的浏览器工具栏按钮上的点击。

alarms

计划代码在将来的特定时间运行。这类似于 setTimeout()setInterval(),除了这些函数不适用于按需加载的后台页面。

bookmarks

使用 WebExtensions bookmarks API,扩展可以与浏览器的书签系统交互并对其进行操作。您可以使用它来为页面添加书签、检索现有书签以及编辑、删除和组织书签。

browserAction

读取和修改属性,并侦听使用 browser_action 清单键定义的浏览器工具栏按钮上的点击。

browserSettings

使扩展能够修改某些全局浏览器设置。此 API 的每个属性都是一个 types.BrowserSetting 对象,提供修改特定设置的功能。

browsingData

使扩展能够清除用户浏览时积累的数据。

captivePortal

确定用户连接的受限门户状态。受限门户是在用户首次连接到 Wi-Fi 网络时显示的网页。用户在受限门户网页上提供信息或执行操作以获得更广泛的网络资源访问权限,例如接受条款和条件或付款。

clipboard

WebExtension clipboard API(与 标准 Clipboard API 不同)使扩展能够将项目复制到系统剪贴板。目前,WebExtension clipboard API 仅支持复制图像,但它旨在将来支持复制文本和 HTML。

commands

侦听用户执行已使用 commands 清单 json 键 注册的命令。

contentScripts

使用此 API 注册内容脚本。注册内容脚本会指示浏览器将给定的内容脚本插入与给定 URL 模式匹配的页面中。

contextualIdentities

使用上下文身份:列出、创建、删除和更新上下文身份。

cookies

使扩展能够获取和设置 Cookie,并在 Cookie 更改时收到通知。

declarativeNetRequest

此 API 使扩展能够指定描述如何处理网络请求的条件和操作。这些声明性规则使浏览器能够评估和修改网络请求,而无需向扩展程序通知单个网络请求。

devtools

使扩展能够与浏览器的开发者工具交互。您可以使用此 API 创建开发者工具页面、与正在检查的窗口交互、检查页面网络使用情况。

dns

使扩展能够解析域名。

dom

访问仅扩展的特殊 DOM 功能。

downloads

使扩展能够与浏览器的下载管理器交互。您可以使用此 API 模块下载文件、取消、暂停、恢复下载并在文件管理器中显示已下载的文件。

events

分派事件的 API 使用的常用类型。

extension

与您的扩展相关的实用程序。获取与您的扩展程序打包在一起的资源的 URL。获取扩展程序页面的 Window 对象。获取各种设置的值。

extensionTypes

其他 WebExtension API 中使用的一些常用类型。

find

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

history

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

i18n

用于国际化扩展的功能。您可以使用这些 API 从扩展程序打包的语言环境文件中获取本地化字符串,找出浏览器的当前语言,并找出其Accept-Language 标头的值。

identity

使用身份 API 获取OAuth2授权码或访问令牌,扩展程序可以使用该令牌访问支持 OAuth2 访问的服务(例如 Google 或 Facebook)的用户数据。

idle

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

management

获取有关已安装加载项的信息。

向浏览器的菜单系统添加项目。

notifications

使用底层操作系统的通知机制向用户显示通知。由于此 API 使用操作系统的通知机制,因此通知的显示方式和行为细节可能因操作系统和用户设置而异。

omnibox

使扩展程序能够在用户在浏览器的地址栏中键入内容时实现自定义行为。

pageAction

读取和修改地址栏按钮的属性,并侦听其点击事件,该按钮使用page_action清单键定义。

permissions

使扩展程序能够在安装后在运行时请求额外的权限。

pkcs11

pkcs11 API 使扩展程序能够枚举PKCS #11安全模块,并使它们能够作为密钥和证书来源供浏览器访问。

privacy

访问和修改各种与隐私相关的浏览器设置。

proxy

使用代理 API 代理 Web 请求。您可以使用proxy.onRequest事件监听器拦截 Web 请求,并返回一个对象,该对象描述是否以及如何代理它们。

runtime

此模块提供有关您的扩展程序及其运行环境的信息。

scripting

将 JavaScript 和 CSS 插入网站。此 API 提供了两种插入内容的方法

使用搜索 API 检索已安装的搜索引擎并执行搜索。

sessions

使用会话 API 列出和恢复浏览器运行期间已关闭的标签页和窗口。

sidebarAction

获取和设置扩展程序侧边栏的属性。

storage

使扩展程序能够存储和检索数据,并侦听存储项的更改。

tabs

与浏览器的标签系统交互。

theme

使浏览器扩展程序能够获取浏览器主题的详细信息并更新主题。

topSites

使用 topSites API 获取包含用户经常访问的页面的数组。

types

定义BrowserSetting类型,用于表示浏览器设置。

userScripts

使用此 API 注册用户脚本,用户脚本是旨在操作网页或提供新功能的第三方脚本。注册用户脚本会指示浏览器将脚本附加到与注册期间指定的 URL 模式匹配的页面。

webNavigation

为导航的各个阶段添加事件监听器。导航包括浏览器中的一个框架从一个 URL 转换到另一个 URL,通常(但并非总是)响应用户操作,例如点击链接或在地址栏中输入 URL。

webRequest

为发出 HTTP 请求的各个阶段添加事件监听器,其中包括在ws://wss://上的 websocket 请求。事件监听器接收有关请求的详细信息,并且可以修改或取消请求。

windows

与浏览器窗口交互。您可以使用此 API 获取有关打开的窗口的信息,以及打开、修改和关闭窗口。您还可以侦听窗口打开、关闭和激活事件。