扩展程序中的新功能

该页面列出最近版本中有关 API 和清单文件的更改。

Google Chrome 35

新增的 API

Google Chrome 34

新增的 API

  • desktopCapture: 桌面捕获 API 可用于捕获屏幕、单个窗口或标签页的内容。

Google Chrome 33

新增的 API

  • declarativeContent: 使用 chrome.declarativeContent API 根据网页内容进行某些操作,而不需要读取网页内容的权限。

Google Chrome 32

新增的 API

  • system.memory: 使用 chrome.system.memory API 获取内存信息。
  • system.cpu: 使用 chrome.system.cpu API 查询 CPU 元数据。

Google Chrome 31

新增的 API

  • tabCapture: 使用 chrome.tabCapture API 与标签页的媒体流交互。
  • downloads: 使用 chrome.downloads API 以编程方式开始下载,监视、操纵、搜索下载的文件。

Google Chrome 30

新增的 API

  • system.storage: 使用 chrome.system.storage API 查询存储设备信息,并在连接或移除可移动存储设备时得到通知。

Google Chrome 29

新增的 API

  • identity: 使用 chrome.identity API 获取 OAuth2 访问令牌。

Google Chrome 28

新增的 API

  • notifications: 使用 chrome.notifications API 通过模板创建丰富通知,并在系统托盘中向用户显示这些通知。

Google Chrome 27

新增的 API

  • power: 使用 chrome.power API 修改系统的电源管理特性。

Google Chrome 25

新增的 API

  • commands: 使用命令 API 添加快捷键,以便触发扩展程序中的操作,例如打开浏览器按钮或向扩展程序发送命令。

Google Chrome 24

新增的 API

Google Chrome 22

新增的 API

  • fontSettings: 使用 chrome.fontSettings API 管理 Chrome 浏览器的字体设置。
  • runtime: 使用 chrome.runtime API 获取后台网页、返回清单文件详情、监听并响应应用或扩展程序生命周期内的事件,您还可以使用该 API 将相对路径的 URL 转换为完全限定的 URL。
  • alarms: 使用 chrome.alarms API 安排代码周期性地运行或者在将来的指定时间运行。

对现有 API 的增强

  • 使用一种我们称之为事件页面的特性,后台网页可以不持久存在。事件页面只有在使用时才会运行,空闲时卸载以便节约资源。

Google Chrome 21

新增的 API

  • input.ime: 使用 chrome.input.ime API 为 Chrome OS 实现自定义的输入法,它允许您的扩展程序处理键盘输入、设置候选内容及管理候选窗口。
  • events: chrome.events 命名空间包含 API 分发事件使用的通用类型,以便在某些有意义的事情发生时通知您。

对现有 API 的增强

  • types.ChromeSetting.set 方法新增 regular_only(仅用于普通用户配置文件)范围。
  • browsingData.RemovalOptions 新增 originTypes 属性。
  • management.uninstall 方法新增 showConfirmDialog 参数。
  • contextMenus.create 方法现在允许您为每一个菜单项指定唯一的标识符,这是为了与新的 contextMenus.onClicked 事件搭配使用,区分单击的菜单项。
  • browserAction.setIcon 和 pageAction.setIcon 现在接受可选的回调函数。
  • privacy.websites 命名空间新增 protectedContentEnabled 属性。
  • tabs.move 方法的 index 参数现在可以使用 -1 表示指定标签页应该放在最后。
  • tabs.highlight 方法的 windowId 变为可选。

Google Chrome 20

新增的 API

  • storage: 使用 chrome.storage API 存储、获取用户数据,追踪用户数据的更改。

对现有 API 的增强

  • chrome.contextMenus 的 contextMenus.create 和 contextMenus.update 方法新增 enabled 参数。
  • 隐私 API 的 privacy.services 对象新增 spellingServiceEnabled 设置。
  • chrome.tabs 的 tabs.executeScript 和 tabs.insertCSS 新增 runAt 参数。
  • sendRequest() 方法已弃用,您应该改用 sendMessage() 方法:runtime.sendMessage 和 tabs.sendMessage。

清单文件更改

  • 清单文件版本 1 在 Chrome 18 中弃用,并将根据清单文件版本 1 支持计划逐渐减少支持。

Google Chrome 19

新增的 API

  • topSites: 使用 chrome.topSites API 访问“打开新的标签页”页面中显示的“常去网站”。
  • browsingData: 使用 chrome.browsingData API 从用户的本地配置文件删除浏览数据。

对现有 API 的增强

  • 窗口 API 的 windows.Window 对象新增 alwaysOnTop 属性,并支持全屏状态。
  • code>chrome.tabs 的 tabs.query 方法新增 currentWindowlastFocusedWindow 参数。
  • 浏览器按钮 API 新增以下函数用于获取信息:browserAction.getTitle、browserAction.getBadgeText、browserAction.getBadgeBackgroundColor 和 browserAction.getPopup。
  • 页面按钮 API 新增以下函数用于获取信息:pageAction.getTitle 和 pageAction.getPopup。

Google Chrome 18

新增的 API

  • devtools.panels: 使用 chrome.devtools.panels API将您的扩展程序整合到开发者工具窗口的用户界面中:创建您自己的面板、访问现有的面板,还可以添加侧边栏。
  • devtools.inspectedWindow: 使用 chrome.devtools.inspectedWindow API 与审查的窗口交互:获得审查网页的标签页标识符,在审查窗口的上下文中执行代码,重新加载网页,或者获取网页中所有资源的列表。
  • devtools.network: 使用 chrome.devtools.network API 获取开发者工具的网络面板中显示的与网络请求相关的信息。
  • pageCapture: 使用 chrome.pageCapture API 将标签页保存为 MHTML。
  • debugger: chrome.debugger API 是 Chrome 远程调试协议(英文)的另一种消息传输方式。chrome.debugger 可以附加到一个或多个标签页,以便记录网络交互、调试 JavaScript、改变 DOM 和 CSS 等等。使用调试对象的标签页标识符指定 sendCommand 的目标标签页,并在 onEvent 的回调函数中通过标签页标识符分发事件。
  • privacy: 使用 chrome.privacy API 控制 Chrome 浏览器中可能会影响用户隐私的特性。这一模块依赖于类型 API 中的 ChromeSettings 原型,用于获取和设置 Chrome 浏览器的配置。

对现有 API 的增强

  • chrome.tabs 的 tabs.create 和 tabs.update 方法新增 openerTabId 参数。

清单文件更改

  • 新的清单文件版本字段指定您的扩展程序包要求的清单文件版本。从 Chrome 18 开始,您应该使用清单文件版本 2。
  • 新的内容安全策略(CSP)字段用于定义扩展程序的策略,指定可以由扩展程序加载和运行的内容类型。
  • 大部分后台网页只包含脚本文件列表,对于这些后台网页,您可以使用新的 background.scripts 属性,Chrome 浏览器会为您生成后台网页。
  • 新的 web_accessible_resources 字段指定可以在网页上下文中使用的打包资源路径。

Google Chrome 17

新增的 API

  • webRequest: 使用 chrome.webRequest API 监控与分析流量,还可以实时地拦截、阻止或修改请求。

对现有 API 的增强

  • 管理 API 的 management.ExtensionInfo 对象新增 disabledReason 属性。
  • 多功能框 API 现在可以在分离式隐身模式中使用。

清单文件更改

  • 内容设置、网页导航和新的网络请求 API 可以使用可选权限。

Google Chrome 16

新增的 API

  • permissions: 使用 chrome.permissions API 在运行时而不是安装时请求声明的可选权限,这样用户可以理解为什么需要这些权限,并且仅在必要时授予这些权限。
  • webNavigation: 使用 chrome.webNavigation API 实时地接收有关导航请求状态的通知。
  • contentSettings: 使用 chrome.contentSettings API 更改设置,控制网站能否使用 Cookie、JavaScript 和插件之类的特性。大体上说,内容设置允许您针对不同的站点(而不是全局地)自定义 Chrome 浏览器的行为。

对现有 API 的增强

  • 新的 tabs.query 方法获取包含指定属性的所有标签页,如果没有指定任何属性则获取所有标签页。
  • 新的 tabs.reload 方法重新加载标签页,您还可以指定是否保留本地缓存的选项。
  • 管理 API 的 management.ExtensionInfo 对象新增 updateURL 属性。
  • 您现在可以在 external_extensions.json 中添加 supported_locales 属性限制外部扩展程序支持的语言。
  • getAllInWindow()getSelected() 方法已弃用。要获取指定窗口中所有标签页的有关详情,请使用 tabs.query,并在参数中指定 {'windowId': windowId}。要获取指定窗口中选中的标签页,请使用 chrome.tabs.query(),并在参数中指定 {'active': true}
  • 您不再需要在 tabs.update 方法中指定 tabId,未提供时,tabId 默认为当前窗口中的选定标签页。
  • Mac OS 中的外部扩展程序文件的所有者现在可以是 Wheel 组(或管理员组)。
  • 面板类型不再需要 "experimental" 权限。默认情况下,面板类型创建弹出窗口,除非设置了 --enable-panels 标志。

清单文件更改

  • 新的 requirements 字段允许您事先声明扩展程序的要求。例如您可以使用该字段指定您的应用要求 3D 图形支持,以便使用 CSS 3D 或 WebGL 之类的特性。

Google Chrome 15

新增的 API

  • webstore: 使用 chrome.webstore API 在您的网站上“内嵌”安装应用与扩展程序。

对现有 API 的增强

  • 您现在可以使用新的管理 API 方法 management.getPermissionWarningsById 和 management.getPermissionWarningsByManifest 获取权限警告。
  • 管理 API 的 management.ExtensionInfo 对象新增 offlineEnabled 字段。
  • 您现在可以使用 __MSG_messagename__ 占位符为内容脚本 CSS 文件提供国际化支持。
  • 如果扩展程序没有 "tabs" 权限,tabs.update 方法调用回调函数时传递 null,而不是标签页详情。

清单文件更改

  • 新增的 offline_enabled 字段让您指定您的应用即使在没有网络连接的情况下也能正常工作。

Google Chrome 14

新增的 API

  • tts: 使用 chrome.tts API 播放合成的文字语音转换(TTS),同时请您参见相关的 ttsEngine API,允许扩展程序实现语音引擎。
  • ttsEngine: 使用 chrome.ttsEngine API 在扩展程序中实现文字语音转换(TTS)引擎。如果您的扩展程序注册了该 API,当任何扩展程序或 Chrome 应用使用 tts 模块朗读时,它会收到事件,包含要朗读的内容以及其他参数。您的扩展程序可以使用任何可用的网络技术合成并输出语音,并向调用方发送事件报告状态。

对现有 API 的增强

  • 右键菜单项现在可以在 file:// 或 chrome:// URL 的文档中出现,原来仅限于 http:// 或 https:// URL 的文档。
  • windows.update 中 updateInfo 对象中可选的 drawAttention 字段让您指定窗口应该提醒用户将焦点切换至该窗口。
  • 新增的 bookmarks.getSubTree 函数使您可以只获取一部分书签架构。
  • tabs.remove 和 tabs.onRemoved 不再需要 "tabs" 权限。

清单文件更改

  • 新增的 content_security_policy 字段可以帮助您避免您的扩展程序中存在的跨站脚本漏洞。
  • 新增的 nacl_modules 字段让您将 Native Client 模块注册为 MIME 类型的内容处理程序。

Google Chrome 13

新增的 API

  • types: chrome.types API 包含用于 Chrome 浏览器的类型声明。
  • proxy: 使用 chrome.proxy API 管理 Chrome 浏览器的代理服务器设置。该模块依赖于类型 API 中的 ChromeSetting 原型,用于获取和设置代理服务器配置。

对现有 API 的增强

  • 现在内容脚本可以向所属扩展程序允许的站点发出跨来源 XMLHttpRequest 请求,而不用通过后台网页转发这些请求。
  • 现在您可以在导入的油猴脚本中使用 @run-at,控制何时插入脚本。它的工作方式与内容脚本中的 run_at 一致。

清单文件更改

  • content_scripts 字段中新增的 exclude_matches 项可以让您更精确地指定您的内容脚本的目标,有关详情请参见匹配表达式和范围。
  • 新增的 clipboardRead 和 clipboardWrite 权限指定 document.execCommand() 的能力。

Google Chrome 12

新增的 API

  • fileBrowserHandler: 使用 chrome.fileBrowserHandler API 扩展 Chrome OS 的文件浏览器。例如,您可以使用该 API 让用户向您的网站上传文件。

对现有 API 的增强

  • chrome.extension 中新增的两个方法——extension.isAllowedFileSchemeAccess 和 extension.isAllowedIncognitoAccess 允许您确定您的扩展程序是否具有附加的访问权限,用户可以使用扩展程序管理网页(chrome://extensions)指定它们。
  • windows.create 方法现在可以接受 focused 值。原来所有新窗口都有键盘焦点,现在您可以不打断用户输入而创建窗口。
  • 如果清单文件指定了 experimental 权限,您的扩展程序可以在 window.create 或 windows.Window 类型中的 type 字段指定 panel(面板)值。
  • chrome.cookies 的 cookies.onChanged 事件新增 cause 参数。
  • chrome.contextMenus 的 contextMenus.create 和 contextMenus.update 方法现在允许您指定框架上下文。

Google Chrome 11

对现有 API 的增强

  • 处于安全性原因,您不能在任意标签页中调用 tabs.captureVisibleTab,而必须首先拥有标签页中显示 URL 的主机权限。要获得原来的行为,请在主机权限中指定
  • 管理 API 的 management.ExtensionInfo 对象新增 homepageUrl 属性。
  • 管理 API 现在允许您获取已禁用的应用和扩展程序图标,此外您还可以修改普通图标的 URL 获取禁用时的图标。有关详情请参见 management.IconInfo。
  • Cookie API 的 cookies.set 和 cookies.remove 方法现在可以接受回调函数。

Google Chrome 10

对现有 API 的增强

  • windows.create 方法新增 tabId 字段,您可以使用它将标签页或面板移动到新窗口中。

清单文件更改

  • 新的 background 权限可以扩展 Chrome 浏览器的生命周期,允许您的扩展程序或应用在 Chrome 浏览器没有窗口打开时就运行。

Google Chrome 9

新增的 API

  • omnibox: 多功能框 API 允许您在 Google Chrome 浏览器的地址栏(又叫多功能框)中注册一个关键字。

对现有 API 的增强

  • tabs.Tab 对象新增 pinned 属性,可以在各种 chrome.tabs 方法中使用。例如您可以调用 tabs.create 创建固定的标签页。
  • windows.create 方法现在可以接受 URL 列表,允许您在新窗口中创建多个标签页。
  • 新增的 management.get 方法允许您获取指定扩展程序或应用的有关信息。

清单文件更改

  • homepage_url 字段允许您指定扩展程序或应用的主页。

Google Chrome 8

新增的 API

  • management: chrome.management API 可以用来管理已经安装并且正在运行的扩展程序或应用,对于替代内建的“打开新的标签页”页面的扩展程序来说特别有用。

Google Chrome 7

清单文件更改

  • 引入了分离式隐身模式,作为可安装网上应用的默认模式(也可用于扩展程序)。
  • 标签页 API 的 create()update() 方法不再要求 tabs 权限,避免了一些常见的吓人的权限对话框。

Google Chrome 6

新增的 API

  • cookies: 使用 chrome.cookies API 查询和修改 Cookie,并在 Cookie 更改时得到通知。
  • idle: 使用 chrome.idle API 检测计算机空闲状态的更改。
  • contextMenus: 使用 chrome.contextMenus API 向 Google Chrome 浏览器的右键菜单添加项目。您可以选择您在右键菜单中添加的项目应用于哪些类型的对象,例如图片、超链接和页面。

对现有 API 的增强

  • extension.getViews 方法现在可以返回弹出视图。
  • 新的 windows.WINDOW_ID_NONE 常量表示焦点离开浏览器。
  • 新的 tabs.getCurrent 方法返回与当前执行脚本相关联的标签页。

清单文件更改

  • geolocation 权限允许扩展程序访问用户的地理位置。
  • 匹配表达式现在可以选择所有协议或所有 URL。
  • 访问 file:/// URL 不再触发访问您的计算机的安全警告,但是现在需要用户在扩展程序管理网页中允许访问。

Google Chrome 5

新增的 API

  • pageAction: 使用 chrome.pageAction API 在地址栏中添加图标。页面按钮代表用于当前网页的操作,但是不适用于所有网页。
  • extension: chrome.extension API 包含任何扩展程序页面都能使用的实用方法。它包括在扩展程序和内容脚本之间或者两个扩展程序之间交换消息的支持,消息传递中详细描述了这些内容。
  • browserAction: 使用浏览器按钮可以在 Google Chrome 浏览器主窗口地址栏右侧的工具栏中添加图标。除了图标,浏览器按钮还可以有工具提示徽章弹出内容
  • bookmarks: 使用 chrome.bookmarks API 创建、组织或通过其他方式操纵书签,另外请参见替代页面,通过它您可以创建一个自定义的书签管理器页面。
  • i18n: 使用 chrome.i18n 架构为您的整个应用或扩展程序实现国际化支持。
  • history: 使用 chrome.history API 与浏览器的历史记录交互,您可以添加、删除、通过 URL 查询浏览器的历史记录。如果您想要使用您自己的版本替换默认的历史记录页面,请参见替代页面
  • tabs: 使用 chrome.tabs API 与浏览器标签页交互。您可以使用该 API 创建、修改或重新排列浏览器中的标签页。
  • windows: 使用 chrome.windows API 与浏览器窗口交互。您可以使用该模块创建、修改和重新排列浏览器中的窗口。