扩充套件

现代浏览器可以通过以下方式为站点和浏览器本身添加新功能基于脚本的扩展。本文档指定了允许开发人员使用的API集为支持API集的浏览器创建可互操作的扩展,以及用于此类扩展的打包格式。

本规范未得到积极维护。以前针对其提交的问题可以在上阅读github.A类公共存档邮件列表也可用,但保留给高层讨论,并且不适合对本文件进行具体评论。

本文件的工作受宪章浏览器扩展CG的,其中包括通信,决策,贡献政策此社区组的。

正在实施本社区小组中讨论和暂定的技术而且没有一位原创作者对这部作品表示反对。然而,由于各种情况,参与程度已降至可能进行富有成效的讨论的水平以下,因此,该组中的活动已停止。

因此,这些规范有一段时间没有得到维护,已经过时。

与此同时“WebExtensions社区组”,目标相似但参与更积极,如雨后春笋般涌现。我们鼓励对这个话题感兴趣的人加入这个小组。

介绍

因为浏览器支持不同的插件模型,所以扩展作者最终会创建不同的代码库并交付不同的浏览器特定插件。该社区小组的目标是通过指定通用扩展接口和定义良好的浏览器行为,使浏览器扩展代码在浏览器之间更具互操作性。这将允许扩展作者大大减少或消除创建针对不同浏览器的扩展所需的返工。

核心API

这些核心API的目标是提供扩展作者所需的功能:

需要先解决ID问题,然后才能处理消息传递(“传递数据”)
GitHub问题14 & 17

API可用性

概述

浏览器扩展主要使用JavaScript编写。除了平时JavaScript Web API,其他API仅可通过浏览器对象。但是,可用于扩展的特定API浏览器对象依赖于:

  • 执行上下文(例如背景/事件、弹出窗口、选项、内容、扩展页)
  • 清单中声明的键(例如browser_action、page_action)
  • 清单中声明的权限(例如contextMenu、tabs、webNavigation、webRequest)
  • 扩展和目标网页(用于内容脚本)的内容安全策略(CSP)

执行上下文和清单限制

浏览器扩展页及其相应的脚本在以下上下文中执行。创建每种特定类型页面所需的清单声明如下所述。

  • 浏览器扩展上下文(“窗口”)-大多数扩展API都可用于此上下文
    • 背景页-使用“background”清单键并指定“persistent”true
    • 事件页面-使用“background”清单键并指定“persistent”false
    • 弹出页面-使用“browseraction”或“pageaction”清单键并指定“defaultpopup”
    • 选项页面-使用“options_page”清单键
    • 自定义页面-例如“browserext://<ext_id>/myCustomPage.html”
  • 内容脚本上下文-可用于编写扩展与托管网站页面交互的脚本的API数量有限
  • 互联网托管网页上下文-消息传递API可用于从托管网站页面发送消息,例如https://en.wikipedia.org/wiki/Main_Page/index.htmlhttps://w3c.github.io/html/index.html至分机
表:API可用性摘要

某些浏览器扩展API需要特定的清单密钥或特定的权限。如果未声明或授予密钥或权限,则对象将无法用于脚本编写。下表总结了这些要求。如果指定了本规范中未定义的清单键,其他浏览器可能会选择忽略这些附加键。

API对象 执行上下文 所需声明
背景页、事件页、弹出页、选项页、自定义页 内容脚本页面 Internet主页 清单键
浏览器操作 Y(Y)1

“浏览器操作”1
上下文菜单 Y(Y)

“权限”:[“context_menus”]
延伸 Y(Y) Y(Y)

国际18n Y(Y) Y(Y)

“default_lang”:“<lang>”4
页面操作 Y(Y)1

“页面操作”1
运行时 Y(Y) Y(Y) Y(Y) “外部可连接”:[…]2
选项卡 Y(Y)

“权限”:[“选项卡”,“活动选项卡”]
Web导航 Y(Y)

“权限”:[“webNavigation”]
Web请求 Y(Y)

“权限”:[“webRequest”]
窗户 Y(Y)

1要么浏览器操作页面操作允许同时进行,而不是同时进行
2运行时对象可供扩展使用,而无需声明“外部可连接”在舱单上。但是,如果声明了此密钥,则扩展将仅接收来自托管网页的消息。这个“外部可连接”声明将阻止来自其他扩展的消息,除非在“ID”列表。
使用运行时.sendMessage要与扩展通信,必须在清单中的“externally _connectable”键下显式指定托管站点的域。
4使用浏览器.i18n对象不需要清单权限声明。然而,清单确实需要一个值(默认_位置)这是必需的,不能由扩展作者在脚本代码中指定。

在WebIDL中表达可用性

本规范使用WebIDL[[WebIDL]]来描述浏览器扩展API。

属性:暴露的

为了表达上述特定API因上下文而可用的条件情况,使用了以下上下文:

  • 窗口-大多数浏览器扩展API的主要上下文。这适用于背景、事件、弹出窗口、选项和自定义上下文
  • 内容脚本-应用于内容脚本上下文

扩展属性:CheckAnyPermissions(检查任何权限)

为了表示上述条件情况,其中某些API由于表示的清单键或权限而可用,新的WebIDL扩展属性"CheckAnyPermissions(检查任何权限)"使用。

API对象CheckAnyPermissions值清单键或值
浏览器“浏览器扩展”不适用
浏览器操作“浏览器外部浏览器操作”“浏览器操作”:[…]
浏览器.context菜单“浏览器外部上下文菜单”“权限”:[“上下文菜单”]
浏览器扩展“浏览器扩展”

国际18n“浏览器扩展”“default_language”:“<code>”
页面操作“浏览器ExtPageAction”“pageAction”:[…]
运行时“浏览器扩展”

选项卡“浏览器外部选项卡”“权限”:[“选项卡”]或
“权限”:[“activeTab”]
Web导航“浏览器外部Web导航”“权限”:[“webNavigation”]
Web请求“浏览器ExtWebRequest”“权限”:[“webRequest”]
窗户“浏览器扩展”

例子:浏览器.i18n

在本例中国际18nAPI应可用于浏览器主机脚本(背景、事件、弹出窗口、选项等)和内容脚本。使用此API不需要清单权限声明。然而,另外,清单确实需要一个值(默认_位置)这是必需的,不能由扩展作者在脚本代码中指定。这表示为浏览器外部清单字典。

注意:为了避免与本文档其他地方的WebIDL定义发生命名冲突,下面的示例在接口名称末尾添加了下划线(“_”)。在本文档其他地方的实际定义中,不使用下划线字符。

  1. 首先,声明浏览器.i18n对象。
    [无接口对象]浏览器ExtI18n_接口{DOMString getMessage_(DOMString-messageName,sequence<DOMStrig?>substitutions);};
  2. 接下来,我们指定可用的上下文(“Window”表示background/event/popup/options…)和“ContentScript”表示内容上下文。
    [NoInterfaceObject,Exposed=(Window,ContentScript)]接口浏览器ExtI18nAPI_{只读属性BrowserExtI18n_i18n;};
  3. 连接国际18n对象浏览器*对象。
    浏览器实现BrowserExtI18nAPI_;
  4. 最后,我们表示manifest.json中的语言环境。例如“default_locale”:“en”
    部分字典BrowserExtManifest_{DOMString?defaultLocaleValue;};

注意事项内容安全策略(CSP)限制

使用一些JavaScript API,例如评估()受CSP限制。如果未指定显式策略,则应用默认策略。规范[[CSP3]]中讨论了默认CSP。如果浏览器扩展作者指定了一个新的CSP,它将覆盖默认的CSP。参考顾客服务提供商概述部分获取有关这些API可用性的更多信息。这个跨域权限内容和背景脚本通信部分提供了有关内容脚本使用API的详细信息。

  • 脚本执行通过评估()不允许执行和内联脚本
  • 只能执行扩展包中的脚本
  • 不允许从web执行脚本

这个浏览器对象

概述

核心浏览器扩展API对象可以从浏览器对象。它们的可用性因API可用性部分。

  • 浏览器操作
  • 上下文菜单
  • 延伸
  • 国际18n
  • 页面操作
  • 运行时
  • 选项卡
  • Web导航
  • Web请求
  • 窗户

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)、内容脚本上下文和Internet宿主网页上下文中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

[CheckAnyPermissions_browserExt_]界面BrowserExtGlobal{只读属性浏览器;};Window实现BrowserExtGlobal;[无接口对象]界面浏览器{};字典浏览器ExtIcon{DOMString路径;DOMString大小;};typedef序列<BrowserExtIcon>BrowserExtIconArray;字典浏览器ExtDeveloper{DOMString名称;DOMString?网址;};字典浏览器ExtBrowserOrPageAction{浏览器ExtIcon?defaultIcon;DOMString?默认弹出菜单;DOMString?默认标题;};字典浏览器ExtKeyValue{DOMString密钥;DOMString?价值;};字典浏览器ExtBrowserSpecificSettings{DOMString浏览器名称;序列<BrowserExtKeyValue>keyValue;};字典浏览器ExtBackroundOrEvent{DOMString?页面;布尔持久性;序列<DOMString>?脚本;};字典浏览器ExtContentScripts{布尔型allFrames;序列<DOMString>?css;序列<DOMString>?排除匹配项;序列<DOMString>?js;序列<DOMString>匹配;DOMString?运行于;};字典浏览器ExtManifest{浏览器外部背景或事件?背景;浏览器外部浏览器或页面操作?浏览器操作;浏览器外部浏览器特定设置?浏览器特定设置;浏览器ExtContentScripts?contentScripts;DOMString?内容安全策略;DOMString?defaultLocale;DOMString?描述;浏览器ExtDeveloper?开发商;浏览器ExtIconArray?图标;DOMString?宣言版本;DOMString名称;DOMString?选项页面;浏览器外部浏览器或页面操作?pageAction;序列<DOMString>?权限;序列<DOMString>?必需密钥;DOMString?版本;序列<DOMString>webAccessibleResources;};

定义

浏览器扩展全局
主界面浏览器如果子核心对象(例如。浏览器操作,浏览器.context菜单等)及其相关API。
浏览器
提供所有浏览器扩展API的核心对象。
浏览器
本节中的接口定义为空,但核心对象(例如BrowserAction、ContextMenus等)的每个后续规范节都包含声明(例如。浏览器实现BrowserExtBrowserActionAPI)将相应的核心对象添加到浏览器>对象。
浏览器扩展图标
表示有关的图形图像的信息浏览器操作页面操作浏览器UI中显示的按钮。
路径
指定.jpg文件的相对位置。
大小
以像素为单位指定图像的宽度和高度。
浏览器ExtIconArray
一组浏览器扩展图标物体。
浏览器ExtDeveloper
指定有关扩展创建者的信息。
名称
指定创建扩展的名称或公司。
网址
指定扩展的公司或产品URL。
浏览器外部浏览器或页面操作
表示有关浏览器操作页面操作.
默认图标
这个浏览器扩展图标图像,如果在宣言.json文件,或无效的如果没有提供。
默认弹出菜单
要调用的页面或脚本的相对路径(如果在宣言.json文件,或无效的如果没有提供。
默认标题
按钮(或工具提示)文本(如果在宣言.json文件,或无效的如果没有提供。
浏览器ExtKeyValue
一对字符串,一个表示查找“键”(或索引),另一个表示关联的“值”。
钥匙
字符串查找“键”(例如“颜色”),提供对相关“值”(例如,“红色”)的访问。
价值
使用关联的查找“键”(例如“颜色”),表示该键的“值”(例如“红色”)。
浏览器外部浏览器特定设置
用于特定于主机的设置,如Gecko、Opera或Edge。
浏览器名称
与设置关联的浏览器名称,例如“geko”、“opera”或“edge”。
keyValue(关键字值)
仅适用于特定浏览器的设置的名称和值对。
浏览器外部背景或事件
代表宣言.json长时间运行或选项卡间脚本的设置。
第页
指定加载为背景或事件页面的页面的相对路径。
持久的
指定页面是始终加载(true)还是在不需要时卸载(false),例如空闲状态。
脚本
指定加载为背景或事件页面的脚本的相对路径。
浏览器外部内容脚本
表示当用户将浏览器导航到特定URL时,关联要执行的脚本文件所需的信息集合。
所有帧
指定是否应为页面的子框架以及主页运行脚本。
css公司
指定满足匹配/exclude_matches和run_at条件时要加载的样式表的相对路径。
不包括匹配项
指定内容脚本将用于的URL模式运行。
js型
指定满足匹配/exclude_matches和run_at条件时要运行的脚本的相对路径。
比赛
指定不运行内容脚本的URL模式。
运行于
指定何时应用脚本和CSS(例如“document_start”或“document _end”)。
浏览器外部清单
表示中提供的所有相关数据宣言.json文件。
背景
对应于“背景”:{}中的键和关联子项宣言.json文件。
浏览器操作
对应于“浏览器操作”:{}中的键和关联子项宣言.json文件。
浏览器特定设置
对应于“浏览器特定设置”:{}中的键和关联子项宣言.json文件。
内容脚本
对应于“内容脚本”:{}中的键和关联子项宣言.json文件。
内容安全策略
对应于“内容安全策略”中的键/值对宣言.json文件。
默认区域设置
对应于“默认_位置”中的键/值对宣言.json文件。
描述
对应于“描述”中的键/值对宣言.json文件。
开发商
对应于“开发人员”:{}中的键和关联子项宣言.json文件。
图标
对应于“图标”:{}中的键和关联子项宣言.json文件。
manifestVersion(宣言版本)
对应于“宣言版本”中的键/值对宣言.json文件。
名称
对应于“名称”中的键/值对宣言.json文件。
选项页面
对应于“options_page”中的键/值对宣言.json文件。
页面操作
对应于“页面操作”:{}中的键和关联子项宣言.json文件。
权限
对应于“权限”:{}中的键和关联子项宣言.json文件。
必需密钥
对应于“必需密钥”:[]中的键和关联子项宣言.json文件。
版本
对应于“版本”中的键/值对宣言.json文件。
web可访问资源
对应于“web_accesible_resources”:{}中的键/值对宣言.json文件。

这个浏览器操作对象

概述

这个浏览器操作对象向浏览器应用程序添加一个始终可见的按钮,通常位于工具栏区域中浏览器应用程序UI的顶部附近。声明浏览器操作不能有页面操作和vice-versa。

显示

这个“浏览器操作”“默认标题”钥匙是必需的。其他键是可选的。
“浏览器操作”:{//必需“default_icon”:{…},//与“图标”格式相同“default_popup”:“页面URL”,//可选“default_title”:“标题字符串”//必需}

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

字典浏览器外部浏览器操作默认值{浏览器ExtIconArray?defaultIcon;DOMString?默认弹出菜单;DOMString?默认标题;};部分字典BrowserExtManifest{浏览器外部浏览器操作默认值?浏览器操作默认值;};typedef序列<byte>BrowserExtColorArray;字典浏览器ExtTabIdDetails{长选项卡Id;};字典浏览器ExtBadgeColorArrayTabId{浏览器ExtColorArray颜色;长选项卡Id;};字典浏览器ExtBadgePathTabId{DOMString路径;长选项卡Id;};字典浏览器ExtBadgeTextTabId{长选项卡Id;DOMString文本;};字典浏览器ExtBadgeTabIdPopup{DOMString弹出HTMLFileName;长选项卡Id;};回调BrowserExtBrowserActionOnClickedCallback=void(BrowserExtTabsTab选项卡);[无接口对象]接口浏览器外部浏览器操作{无效禁用(长tabId);void enable(长tabId);承诺<BrowserExtColorArray>getBadgeBackgroundColor(BrowserExtTabIdDetails详细信息);承诺<DOMString?>getBadgeText(浏览器ExtTabIdDetails详细信息);承诺<DOMString?>getPopup(浏览器ExtTabIdDetails详细信息);BrowserExtEvent onClicked(BrowserExtBrowserActionOnClickedCallback回调);void setBadgeBackgroundColor(浏览器ExtBadgeColorArrayTabId详细信息);void setBadgeText(浏览器ExtBadgeTextTabId详细信息);Promise<void>setIcon(BrowserExtBadgePathTabId详细信息);void setPopup(浏览器ExtBadgeTabIdPopup详细信息);};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExtBrowserAction_]接口BrowserExtBrowserActionAPI{只读属性BrowserExtBrowserAction浏览器操作;};浏览器实现BrowserExtBrowserActionAPI;

定义

浏览器外部浏览器操作默认值
表示BrowserAction按钮的初始状态,由宣言.json文件。
默认图标
浏览器UI中为BrowserAction按钮显示的初始图像,由宣言.json文件。
默认弹出菜单
单击BrowserAction按钮时要显示的页面的相对路径,由中的值指定宣言.json文件。
默认标题
浏览器UI中使用BrowserAction按钮显示的初始文本字符串,由宣言.json文件。
浏览器操作默认值
对象,该对象表示BrowserAction按钮的初始状态,由宣言.json文件。
浏览器ExtColorArray
BrowserAction按钮颜色的RGBA。
浏览器外部选项卡ID详细信息
作为参数传递给多个浏览器操作方法。该对象封装了执行关联方法所需的信息。
选项卡Id
表示感兴趣的选项卡的数字整数ID。
浏览器ExtBadgeColorArrayTabId
调用时作为Promise返回的对象浏览器.getBadge背景颜色方法。
颜色
BrowserAction按钮背景的RGBA颜色。
选项卡Id
关联选项卡的数字整数ID。
浏览器ExtBadgePathTabId
作为参数传递给浏览器操作.setIcon()方法。
路径
要在UI中的BrowserAction按钮中显示的图像的相对路径。
选项卡Id
关联选项卡的数字整数ID。
浏览器ExtBadgeTextTabId
作为参数传递给浏览器操作.setBadgeText()方法。
选项卡Id
关联选项卡的数字整数ID。
文本
要在UI中的BrowserAction按钮中显示的文本字符串。
浏览器ExtBadgeTabIdPopup
作为参数传递给浏览操作.setPopup()方法。
弹出HTML文件名
激活UI中的BrowserAction按钮时要显示的页面的相对路径。
选项卡Id
关联选项卡的数字整数ID。
浏览器ExtBrowserActionOnClickedCallback
此回调处理浏览器操作.onClicked()事件。
浏览器外部浏览器操作
的定义浏览器操作对象。
使残废
指示浏览器应更改浏览器UI中的BrowserAction按钮,以使其无法激活,通常会直观地更改UI并向用户指示此状态。
使可能
指示浏览器应更改浏览器UI中的BrowserAction按钮,以便激活该按钮,通常会直观地更改UI并向用户指示此状态。
获取Badge背景颜色
返回UI中BrowserAction按钮的背景颜色。
获取标签文本
返回BrowserAction按钮标记文本的UI字符串。
获取弹出窗口
返回用户在浏览器UI中激活BrowserAction时要显示的页面的相对路径。
onClicked(单击)
当用户激活BrowserAction按钮时激发的事件。
setBadge背景颜色
指定要在中显示的新颜色,作为浏览器UI中BrowserAction按钮的背景。
设置标记文本
指定要在浏览器UI中的BrowserAction按钮中显示的新文本字符串。
设置图标
指定要在浏览器UI中的BrowserAction按钮中显示的新图像。
设置弹出菜单
指定用户在浏览器UI中激活BrowserAction时要显示的页面的相对路径。
浏览器外部浏览器操作API
的接口浏览器.浏览器操作对象。
浏览器操作
这个浏览器操作对象。

这个上下文菜单对象

概述

这个上下文菜单对象允许将其他条目添加到浏览器的上下文菜单中。菜单将选择性地显示各种浏览器UI元素(浏览器操作或页面操作按钮)或页面元素(框架、图像、链接、页面、选择等)。

清单

A类“上下文菜单”条目必须在“权限”键。图标键是可选的。

“权限”:[//必需“contextMenus”//必需],//必需“图标”:{//可选“<size>”:“<name.png>”//可选,建议16号}//可选

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

enum BrowserExtContextType{“all”,“audio”,“browser_action”,“editable”,“frame”,“image”,“link”,”page“,”page_action“,“selection”,“video”};enum BrowserExtItemType{“checkbox”,“normal”,“radio”,“separator”};字典浏览器ExtContextMenuCreateDetails{布尔校验;序列<上下文类型>?语境;序列<DOMString>?documentUrlPatterns;启用布尔值;DOMString?身份证件;功能onclick;(long还是DOMString?)parentId;序列<DOMString>?targetUrlPatterns;DOMString?标题;DOM字符串?类型;};字典浏览器ExtContextMenuUpdateDetails{布尔校验;序列<BrowserExtContextType>?语境;序列<DOMString>?documentUrlPatterns;启用布尔值;功能onclick;长parentId;序列<DOMString>?targetUrlPatterns;DOMString?标题;ItemType?类型;};字典浏览器ExtContextMenuOnClickedDetails{布尔校验;布尔可编辑;长帧Id;DOMString?框架URL;DOMString?链接URL;DOMString?媒体类型;(long或DOMString)menuItemId;DOMString?页面URL;(long还是DOMString?)parentMenuItemId;DOMString?selectionText;DOMString?srcUrl;布尔值被选中;};回调BrowserExtContextMenuOnClickedCallback=void(BrowserextContextMenu OnClicked详细信息,BrowserExtTabsTab选项卡);[无接口对象]界面BrowserExtContextMenus{Promise<long>create(BrowserExtContextMenuCreateDetails详细信息);BrowserExtEvent onClicked(BrowserExtContextMenuOnClickedCallback回调);Promise<void>remove((long或DOMString)itemId);承诺<void>removeAll();Promise<void>update((long或DOMString)itemId,BrowserExtContextMenuUpdateDetails详细信息);};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExtContextMenus_]界面BrowserExtContextMenusAPI{只读属性BrowserExtContextMenus contextMenus;};Browser实现BrowserExtContextMenusAPI;

定义

浏览器外部上下文类型
指定是否在特定条件下显示上下文菜单项。
全部的
适用于任何上下文。
音频
当用户上下文单击音频元素时适用。
浏览器操作(_A)
当用户上下文单击浏览器UI中的BrowserAction按钮时适用。
可编辑的
当用户上下文单击活动选项卡中的可编辑元素(如文本区域)时适用。
框架
当用户在活动选项卡的嵌套iframe中单击上下文时适用。
形象
当用户上下文单击活动选项卡中的图像时适用。
链接
当用户点击活动选项卡中的链接时适用。
第页
当用户在活动选项卡中的页面中单击上下文时适用,但其他页面上下文均不适用(例如,单击不在图像或嵌套的iframe或链接上)。
页面操作(_A)
当用户上下文单击浏览器UI中的PageAction按钮时适用。
选择
选择活动选项卡中的部分页面时适用。
视频
当用户上下文单击活动选项卡中的视频元素时适用。
浏览器ExtItemType
定义要与菜单项文本关联的UI控件类型。
复选框
表示二进制状态的上下文菜单项。它在标签旁边显示一个选中标记。单击该项可切换选中标记。contextMenus.onClicked侦听器将被传递两个额外的属性:“checked”,表示该项现在是否被选中,“wasChecked”表示该项在单击事件之前是否被选中。
正常的
仅显示标签的上下文菜单项。
收音机
表示一组选项之一的上下文菜单项。就像复选框一样,这也会在标签旁边显示一个复选标记,其contextMenus.onClicked监听器被传递为“checked”和“wasChecked”。但是,如果您创建了多个单选项目,则这些项目将作为一组单选项目发挥作用:只能选中组中的一个项目,单击一个项目将使其成为选中的项目。
分离器
分隔一组项目的行。
浏览器外部上下文菜单创建详细信息
新上下文菜单项的详细信息。
选中的
布尔值。复选框或单选项的初始状态:true表示选中,false表示未选中。在给定的一组无线电项目中,一次只能选择一个无线电项目。
上下文
contextMenus数组。ContextType。此菜单项将出现的上下文数组。如果未指定,则默认为['page']。
documentUrlPatterns(文档URL模式)
字符串数组。类似于documentUrlPatterns,但允许您根据img/audio/video标记的src属性和锚标记的href进行筛选。
启用
布尔值。是启用还是禁用此上下文菜单项。默认为true。
身份证件
字符串。要分配给此项目的唯一ID。事件页面必须使用。不能与此扩展的另一个ID相同。
一次性的
功能。单击菜单项时将调用的函数。事件页面不能使用这个:相反,它们应该为contextMenus.onClicked注册一个侦听器。
父ID
整数或字符串。父菜单项的ID;这将使该项成为先前添加项的子项。
targetUrlPatterns(目标URL模式)
字符串数组。类似于documentUrlPatterns,但允许您根据img/audio/video标记的src属性和锚标记的href进行筛选。
标题
istring。项目中显示的文本。必须输入,除非类型为“分隔符”。您可以在字符串中使用“%s”。如果这样做,并且在显示上下文菜单时页面中选择了一些文本,则所选文本将插入到标题中。例如,如果标题是“将'%s'翻译成Pig Latin”,并且用户选择单词“cool”,然后激活上下文菜单,则上下文菜单项的标题将是:“将‘cool’翻译成Pig-Latin。”。
类型
contextMenus(上下文菜单)。ItemType。菜单项的类型:“普通”、“复选框”、“单选”、“分隔符”。默认为“正常”。
浏览器外部上下文菜单更新详细信息
要更新的详细信息。接受与create()相同的值。
选中的
布尔值。复选框或单选项的初始状态:true表示选中,false表示未选中。在给定的单选项目组中,一次只能选择一个单选项目。
上下文
contextMenus数组。ContextType。此菜单项将出现的上下文数组。如果未指定,则默认为['page']。
documentUrlPatterns(文档URL模式)
字符串数组。允许您将该项限制为仅应用于URL与给定匹配模式之一匹配的文档。这也适用于框架。
启用
布尔值。是启用还是禁用此上下文菜单项。默认为true。
一次性的
功能。单击菜单项时将调用的函数。事件页面不能使用这个:相反,它们应该为contextMenus.onClicked注册一个侦听器。
父ID
整数或字符串。父菜单项的ID;这将使该项成为先前添加项的子项。注意:您不能将一个项目更改为其自身后代的子项目。
targetUrlPatterns(目标URL模式)
字符串数组。类似于documentUrlPatterns,但允许您根据img/audio/video标记的src属性和锚标记的href进行筛选。
标题
字符串。项目中要显示的文本;除非类型是“分隔符”,否则这是必需的。
类型
contextMenus(上下文菜单)。ItemType。菜单项的类型:“普通”、“复选框”、“单选”、“分隔符”。默认为“正常”。
浏览器外部上下文菜单OnClickedDetails
单击上下文菜单项时发送的信息。
选中的
布尔值。指示复选框或单选项在单击后是否被选中的标志。
可编辑的
布尔值。指示元素是否可编辑的标志:例如,如果它是文本区域。
框架Id
整数或字符串。单击的帧的ID。
框架URL
字符串。单击上下文菜单的元素的框架的URL(如果它位于框架中)。
链接URL
字符串。如果元素是一个链接,那么它所指向的URL。
媒体类型
字符串。“图像”、“视频”或“音频”之一,如果在这些类型的元素之一上激活了上下文菜单。
菜单项Id
整数或字符串。单击的菜单项的ID。
页面URL
字符串。单击菜单项的页面的URL。如果单击发生在没有当前页面的上下文中,例如在浏览器操作中,则此属性不存在。
父菜单项ID
整数或字符串。单击项的父ID(如果有)。
选择文本
字符串。如果页面中选择了某些文本,则包含所选文本/添加>
服务器URL
字符串。将为具有“src”URL的元素显示。
已被选中
布尔值。指示在单击复选框或单选项之前是否选中它的标志。
浏览器外部上下文菜单OnClickedCallback
的回调浏览器.context菜单对象。
浏览器外部上下文菜单
定义浏览器.context菜单对象。
创造
给定定义项目属性的选项对象,创建新的上下文菜单项。与其他异步函数不同,此函数不返回承诺,而是使用可选回调来传递成功或失败。这是因为它的返回值是新项的ID。
浏览器外部上下文菜单.onClicked
单击上下文菜单项时激发。
去除
删除上下文菜单项。这是一个返回Promise的异步函数。
移除所有
删除此扩展添加的所有上下文菜单项。这是一个返回Promise的异步函数。
更新
更新以前创建的上下文菜单项。这是一个返回Promise的异步函数。
浏览器外部上下文菜单API
的接口浏览器.context菜单对象。
上下文菜单
这个浏览器.context菜单对象。

这个国际18n对象

概述

这个i81亿对象提供了一种访问已本地化为支持语言的字符串的方法。

显示

提供本地化字符串时,必须使用两个字符的代码指定默认区域设置。代码可在RFC1766协议IETF BCP47接口。本地化清单字符串时,使用以下语法。

“default_locale”:“<twoCharLocaleCode>”,//必需“name”:“__MSG_<yourCustomNameStringIdentifier>__”,“description”:“__MSG_<yourCustomDescriptionStringIdentifier>__”,
例如
“default_locale”:“en”,//英文“name”:“__MSG_MySampleExtension__”,“description”:“__MSG_MySampleExensionDescription__”,

本地化字符串

每个支持的区域设置都必须有自己的messages.json消息存储在文件夹中的文件_区域设置/<twoCharLocaleCode>。此处用于目录名的双字符代码与mainfest.json公司以指定默认_位置.

区域设置代码和匹配

与通用标准相反,API返回的文件/目录名称中使用的区域设置代码的格式如下:

<语言>[_<地区>]

也就是说,一个两个字母的语言代码,可以选择后跟一个下划线和一个两字母的区域代码。匹配区域设置代码,以便使用精确匹配(如果可用),返回到最不特定、最接近的匹配。因此,对于“en_US”,将按优先顺序选择以下区域设置:

  • en_US(_US)
  • 环境_US_var
  • 英语
  • en_GB(_G)
  • 环境GB_var

字符串标记

字符串通过预处理消息本地化,替换|$[a-zA-Z0-9型@_]+$|代币及其替代品的价值。稍后,它将处理的结果字符串|$[0-9]美元|替换。

允许使用任意数量的连续|$|,并替换为该数字减去1。的实例|$|后面跟任意数量的连续数字也是允许的,但提供9个以上替换的本地化字符串将被忽略。

区域设置消息替换

表单中的区域设置消息__消息_<消息名称>_将自动替换为CSS文件中相应的本地化消息和某些manifest.json字符串值。具体来说,替换是根据正则表达式进行的__味精_([A-Za-z0-9@_]+?)__,这意味着第一次出现__将立即终止消息名。

CSS文件作为原始文本流进行预处理,不考虑CSS语法。宣言.json值在JSON解析后进行处理,结果始终被视为文字字符串。将为本地化消息处理以下清单键:

  • 名称
  • 短名称
  • 描述
  • 作者
  • 主页url
  • 开发人员姓名
  • 开发人员.url
  • 浏览器操作默认标题
  • 浏览器操作默认url
  • 页面动作默认标题
  • 页面操作默认url

占位符

翻译后的字符串可能包含不会被翻译或将被变量内容替换的子字符串。例如

“消息示例”:{“消息”:“您单击了$URL$。”,“description”:“告诉用户他们单击了哪个链接。”,“占位符”:{“url”:{“内容”:“$1”“示例”:“https://www.w3.org"}

占位符名称(上例中的“url”)用于表示替换字符串中的占位符(例如,“url“变为$url$)。它不区分大小写,可以包含与消息字符串名称相同的字符。

这个“内容”项定义占位符的内容。这可以是硬编码字符串,例如“My placeholder”,但也可以包括从i18n.getMessage()调用中获得的值。

可选的“示例”项目旨在通过向翻译人员展示占位符在最终用户中的显示方式来帮助翻译人员,使他们能够在本地化文件时做出最佳选择。

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)和内容脚本上下文中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

[无接口对象]接口浏览器ExtI18n{DOMString getMessage(DOMString-messageName,sequence<DOMStrig?>?substitutions);};[NoInterfaceObject,Exposed=(Window,ContentScript),CheckAnyPermissions_browserExt_]界面浏览器ExtI18nAPI{只读属性BrowserExtI18n i18n;};浏览器实现BrowserExtI18nAPI;部分字典BrowserExtManifest{DOM字符串?defaultLocaleValue;};

定义

浏览器ExtI18n
用于检索已翻译为相应区域设置的适当语言和格式的字符串的接口。
获取消息
获取指定消息的本地化字符串。
浏览器ExtI18nAPI
的接口浏览器.i18n对象。
国际18n
这个浏览器.i18n对象。
默认本地值
此密钥必须存在于宣言.json如果扩展名包含locales目录,则必须不存在。它标识_locales的子目录,该子目录将用于查找扩展的默认字符串。

这个页面操作对象

概述

这个页面操作对象将按钮添加到浏览器应用程序中,通常位于地址栏中。此按钮通常仅在扩展检测到它可以在活动选项卡的当前页面上执行操作时显示浏览器操作不能有页面操作和vice-versa。

显示

这个“页面操作”“默认标题”需要密钥。其他键是可选的。

“page_action”:{//必需“default_icon”:{…},//与“图标”格式相同“default_popup”:“页面URL”,//可选“default_title”:“标题字符串”//必需}

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

字典浏览器ExtPageActionDefaults{浏览器ExtIconArray?默认图标;DOMString?默认弹出菜单;DOMString?默认标题;};部分字典BrowserExtManifest{浏览器ExtPageActionDefaults?pageActionDefaults;};字典浏览器ExtBadgePath{DOMString路径;};回调BrowserExtPageActionOnClickedCallback=void(BrowserExtTabsTab选项卡);界面BrowserExtPageAction{承诺<DOMString?>getPopup(浏览器ExtTabIdDetails详细信息);承诺<DOMString?>getTitle(BrowserExtTabIdDetails详细信息);void hide(长tabId);BrowserExtEvent onClicked(BrowserExtPageActionOnClickedCallback回调);Promise<void>setIcon(BrowserExtBadgePath路径);void setPopup(浏览器ExtBadgePathTabId详细信息);void setTitle(BrowserExtBadgeTextTabId详细信息);空显示(长tabId);};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExtPageAction_]接口BrowserExtPageActionAPI{只读属性BrowserExtPageAction pageAction;};浏览器实现BrowserExtPageActionAPI;

定义

浏览器ExtPageActionDefaults
表示PageAction按钮的初始状态,由宣言.json文件
默认图标
在浏览器UI中为PageAction按钮显示的初始图像,由宣言.json文件。
默认弹出菜单
单击PageAction按钮时要显示的页面的相对路径,由宣言.json文件。
默认标题
浏览器UI中使用BrowserAction按钮显示的初始文本字符串,由宣言.json文件。
页面操作默认值
对象,该对象表示PageAction按钮的初始状态,由宣言.json文件。
浏览器ExtBadgePath
作为参数传递给页面操作.setIcon()方法。
路径
要在UI中的PageAction按钮中显示的图像的相对路径。
浏览器ExtPageActionOnClickedCallback
此回调处理pageAction.onClicked()事件。
浏览器ExtPageAction
的定义浏览器页面操作对象。
获取弹出窗口
返回用户在浏览器UI中激活PageAction时要显示的页面的相对路径。
获取标题
返回PageAction按钮标题文本的UI字符串。
隐藏
隐藏给定选项卡的页面操作。
onClicked(单击)
用户激活PageAction按钮时激发的事件。
设置图标
指定要在浏览器UI中的PageAction按钮中显示的新图像。
设置弹出菜单
指定用户在浏览器UI中激活PageAction时要显示的页面的相对路径。
设置标题
指定要为浏览器UI中的PageAction按钮显示的新文本字符串。
显示
整数。要显示其页面操作的选项卡的ID。
浏览器ExtPageActionAPI
的接口浏览器页面操作对象。
页面操作
这个浏览器页面操作对象。

这个运行时对象

概述

这个运行时对象用于跨上下文发送和接收消息,以及访问扩展级信息,如id、清单和资源的绝对路径。

显示

扩展使用此对象不需要其他清单条目。但是,如果声明了“externally_connectable”键,则扩展将仅接收来自托管网页的消息。此外,扩展将通过仅指定批准的扩展来阻止来自其他扩展的消息。请注意,如果此键用于允许网页发送消息,除非“id”:[“*”]则来自其他扩展的所有消息都将被阻止。中的URL“匹配项”数组必须包含一个顶级域。此列表不影响内容脚本。

“外部可连接”:[“ids”:[…],//允许发送消息的其他扩展的标识符“匹配”:[…]//允许发送消息的托管网页的URL模式]

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)、内容脚本上下文和Internet宿主网页上下文中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

enum BrowserExtRuntimeOnInstalledReason{“浏览器更新”,“扩展安装”,“延伸更新”};字典浏览器ExtRuntimeOnInstalledDetails{BrowserExtRuntimeOnInstalledReason原因;DOMString?上一版本;DOMString?身份证件;};字典浏览器ExtRuntimePort{功能断开;DOMString名称;对象onDisconnect;消息对象;函数postMessage;浏览器ExtRuntimeMessageSender?发件人;};字典浏览器ExtRuntimeMessageSender{DOMString?身份证件;长帧Id;浏览器ExtTabsTab?选项卡;DOMString?网址;};回调BrowserExtRuntimeOnConnectCallback=void(BrowserExtRuntimePort端口);callback BrowserExtRuntimeOnInstalledCallback=void(BrowserExtRuntimeOnInstalledDetails详细信息);callback BrowserExtRuntimeOnMessageCallback=void(可选任意消息,BrowserExtRuntimeMessageSender发送方,Browser ExtRuntimeSendResponseCallback回调);[无接口对象]界面BrowserExtBrowserRuntime{对象getManifest();DOMString getURL(DOMString-path);属性DOMString id;void onConnect(BrowserExtRuntimeOnConnectCallback回调);void onInstalled(BrowserExtRuntimeOnInstalledCallback回调);void onMessage(BrowserExtRuntimeOnMessageCallback回调);Promise<any>sendMessage(可选DOMString extensionId,任意消息);属性BrowserExtRuntimePort端口;属性BrowserExtRuntimeMessageSender MessageSender;};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExt_]接口BrowserExtRuntimeAPI{只读属性BrowserExtRuntime运行时;};浏览器实现BrowserExtRuntimeAPI;

定义

浏览器ExtRuntimeOnInstalledReason
原因是runtime.onInstalled(运行时.on已安装)正在调度事件。
浏览器更新
浏览器已更新为新版本。
扩展安装
已安装扩展。
扩展更新
扩展已更新为新版本。
浏览器外部运行时间已安装详细信息
runtime.onInstalled(运行时.on已安装)事件被激发。
原因
A类运行时。安装原因值,说明发送此事件的原因。
上一版本
字符串。指示刚刚更新的扩展的早期版本。只有在原因值为更新。
身份证件
字符串。指示更新的模块的ID。
浏览器外部运行时端口
表示两个特定上下文之间连接的一端,可用于交换消息。
断开
功能。断开端口连接。任何一端都可以在完成端口连接后调用此命令。这将导致另一端触发onDisconnect。如果另一端保持与此端口相关的某些状态,这将非常有用,可以在断开连接时清除这些状态。如果此端口连接到本机应用程序,此函数将关闭本机应用。
名称
字符串。端口名称,在运行时.connect()选项卡连接()创建它的调用。如果此端口连接到本机应用程序,则其名称为本机应用软件的名称。
onDisconnect(断开连接)
对象。它包含addListener()removeListener()浏览器扩展中所有事件通用的函数。当另一端调用Port.disconnect()时,将调用侦听器函数。每个端口只触发一次此事件。侦听器函数将传递给port对象。如果端口由于错误而断开连接,则port参数将包含错误属性,提供有关错误的详细信息。
on消息
对象。它包含addListener()removeListener()浏览器扩展中所有事件通用的函数。当另一端向该端口发送消息时,将调用侦听器函数。侦听器将被传递给另一端发送的JSON对象。
发布消息
功能。向另一端发送消息。这需要一个参数,它是一个JSON对象,表示要发送的消息。它将被传递给侦听端口的onMessage事件的任何脚本,如果此端口连接到本机应用程序,则将被传递到本机程序。
发件人
包含有关邮件发件人的信息。此属性仅在传递到的端口上存在on连接onConnectExternal(连接外部)听众。
浏览器ExtRuntimeMessageSender
包含消息或连接请求发送方信息的对象。
身份证件
字符串。发送消息的扩展的ID(如果消息是由扩展发送的)。请注意,这是扩展的内部ID,而不是manifest.json应用程序密钥中的ID。
框架Id
整数。打开连接的框架。顶级帧为零,子帧为正。只有在设置选项卡时才会设置此选项。
选项卡
这个选项卡。选项卡打开了连接。只有从选项卡(包括内容脚本)打开连接时,此属性才会出现。
网址
字符串。承载发送消息的脚本的页面或框架的URL。
浏览器ExtRuntimeOnConnectCallback
当使用扩展进程或内容脚本建立连接时触发回调。
浏览器ExtRuntimeOnInstalledCallback
当首次安装扩展、将扩展更新为新版本以及将浏览器更新为新的版本时,将触发回调。
浏览器ExtRuntimeOnMessageCallback
用于侦听来自浏览器扩展的另一部分的消息的回调。
浏览器外部浏览器运行时
的定义浏览器.时间对象。
获取清单
获取完整信息宣言.json文件,序列化为JSON对象。
获取URL
给定与宣言.json返回一个完全限定的URL。
身份证件
此浏览器扩展的ID。
onConnect(连接)
当使用浏览器扩展进程或内容脚本建立连接时激发。
已安装
首次安装扩展、将扩展更新为新版本以及将浏览器更新为新的版本时激发/日期>
on消息
使用此事件侦听来自浏览器扩展的其他部分的消息。
发送消息
向扩展或其他扩展中的事件侦听器发送单个消息。
端口
表示两个特定上下文之间连接的一端,可用于交换消息。
消息发送者
包含消息或连接请求发送方信息的对象。
浏览器ExtRuntimeAPI
的接口浏览器运行时对象。
运行时
这个浏览器.时间对象。

这个选项卡对象

概述

这个选项卡对象用于访问有关选项卡的元数据,如其标题,或访问选项卡本身中的当前内容。

显示

这个“选项卡”使用此对象需要权限。请参阅活动选项卡许可部分获取有关访问这些API的更多信息。

{“权限”:[//必需“tabs”//需要“tab”或“activeTab”“activeTab”//需要“tabs”或“activeLab”]//必需}

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

enum BrowserExtTabMutedReasonDetails{“用户”,“捕获”,“扩展”};enum BrowserExtRunAt{“document_end”,“document _ idle”,“document_start”};enum BrowserExtTabStatus{“完成”,“加载”};enum BrowserExtWindowTypes{“应用”,“正常”,“面板”,“弹出”};enum BrowserExtTabsCaptureVisibleTabFormat{“jpeg”,“png”};字典浏览器ExtTabsTab{布尔活动;布尔可听;DOMString?收藏夹URL;布尔突出显示;长高;长id;布尔隐姓埋名;长指数;选项卡静音细节?mutedDetails;长openerTabId;布尔钉住;DOMString?会话ID;DOMString?地位;DOMString?标题;DOMString?网址;长宽度;长窗口ID;};字典浏览器ExtTabMutedDetails{DOMString?扩展ID;布尔静音;选项卡静音原因详细信息?原因;};字典浏览器ExtTabConnectDetails{长帧Id;DOMString?名称;};字典浏览器ExtTabCreateDetails{布尔活动;长指数;长openerTabId;布尔钉住;DOMString?网址;长窗口ID;};字典浏览器外部选项卡脚本和CSS详细信息{布尔型allFrames;DOMString?代码;DOMString?文件;长帧Id;布尔匹配AboutBlank;浏览器ExtRunAt?运行于;};字典浏览器ExtTabsCaptureVisibleTabDetails{浏览器ExtTabsCaptureVisibleTabFormat图像捕获格式;长jpegQuality;};字典浏览器ExtTabQueryDetails{布尔活动;布尔可听;布尔currentWindow;布尔突出显示;长指数;布尔lastFocusedWindow;布尔静音;布尔钉住;选项卡状态?地位;DOMString?标题;(DOMString?或序列<DOMString>?)url;长窗口ID;窗口类型?windowType;};字典浏览器ExtTabReloadDetails{布尔旁路缓存;};字典浏览器ExtTabSendMessageDetails{长帧Id;};字典浏览器ExtTabUpdateDetails{布尔活动;布尔突出显示;布尔静音;长openerTabId;布尔固定;DOMString?网址;};字典浏览器ExtTabIdWindowId{长选项卡Id;长窗口ID;};字典浏览器ExtTabsWindowsIdIsWindowClosing{布尔值为WindowClosing;长窗口ID;};字典浏览器ExtTabsOnUpdatedChangeDetails{布尔可听;DOM字符串?favIconUrl;选项卡静音细节?mutedDetails;布尔钉住;DOMString?地位;DOM字符串?标题;DOMString?网址;};回调BrowserExtTabsOnActivatedCallback=void(BrowserextTabIdWindowsId activeDetails);回调BrowserExtTabsOnCreatedCallback=void(浏览器ExtTabTab选项卡);回调BrowserExtTabsOnRemovedCallback=void(长tabId,BrowserextTabsWindowsIdIsWindowClosing removeDetails);回调BrowserExtTabsOnUpdatedCallback=void(长选项卡Id,BrowserextTabsOnUpdate更改详细信息,Browser ExtTabsTab选项卡);[无接口对象]界面BrowserExtBrowserTabs{Promise<DOMString>captureVisibleTab(长窗口ID,BrowserExtTabsCaptureVissibleTabDetails详细信息);RuntimePort连接(long tabId,BrowserExtTabConnectDetails详细信息);Promise<BrowserExtTabsTab>create(BrowserExtTabCreateDetails详细信息);void executeScript(长tabId、BrowserExtTabScript和CSSDetails详细信息);承诺<BrowserExtTabsTab>get(long tabId);承诺<BrowserExtTabsTab>getCurrent();void insertCSS(长tabId、BrowserExtTabScript和CSSDetails详细信息);void onActivated(BrowserExtTabsOnActivatedCallback回调);void onCreated(BrowserExtTabsOnCreatedCallback回调);void onRemoved(BrowserExtTabsOnRemovedCallback回调);void onUpdated(BrowserExtTabsUnUpdatedCallback回调);Promise查询(BrowserExtTabQueryDetails queryDetails);承诺重新加载(BrowserExtTabReloadDetails详细信息);Promise<void>删除((long或sequence<long>)tabIds);Promise<any>sendMessage(长tabId,任意消息,可选BrowserExtTabSendMessageOptions详细信息);Promise<BrowserExtTabsTab>update(可选长tabId,BrowserExtTabUpdateDetails详细信息);};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExtTabs_]界面浏览器ExtTabsAPI{只读属性BrowserExtTabs选项卡;};浏览器实现BrowserExtTabsAPI;

定义

浏览器扩展选项卡静音原因详细信息
指定选项卡被静音或取消静音的原因。
用户
用户设置静音状态。
捕获
选项卡捕获开始,强制静默状态更改。
延伸
一个扩展设置了静音状态。如果这是原因,那么extensionId在tabs.mutedInfo选项卡将包含负责的扩展的ID。
浏览器外部运行时间
最快将代码注入选项卡。默认为“document_idle”.
文档结束(_E)
相对应交互式。DOM已完成加载,但可能仍在加载脚本和图像等资源。
文档句柄(_I)
相对应完成。文档及其所有资源已完成加载。
文档_开始
相对应加载。DOM仍在加载中。
浏览器外部选项卡状态
选项卡的状态。
完成
选项卡已完成加载。
加载
选项卡未完成加载。
浏览器外部窗口类型
承载此选项卡的窗口的类型。
应用程序
应用程序主机窗口。
正常的
正常主机窗口。
面板
面板主机窗口。
弹出窗口
弹出主机窗口。
浏览器外部选项卡捕获可见选项卡格式
图像的格式。
jpeg格式
JPEG图像格式。
png公司
PNG图像格式。
浏览器外部选项卡选项卡
包含有关选项卡的信息。通过此选项可以访问有关选项卡中的内容、内容的大小、生效的特殊状态或限制等信息。
积极的
布尔值。选项卡在其窗口中是否处于活动状态。即使选项卡的窗口当前没有焦点,这也可能是真的。
听得见的
布尔值。如果标签未静音:标签是否发出声音。如果标签被静音:如果没有静音,标签是否会发出声音。
常用图标URL
字符串。选项卡favicon的URL。仅当扩展具有“选项卡”权限时才存在。如果选项卡正在加载,它也可能是一个空字符串。
突出显示的
布尔值。选项卡是否高亮显示。
高度
整数。选项卡的高度(以像素为单位)。
身份证件
整数。选项卡的ID。选项卡ID在浏览器会话中是唯一的。选项卡ID也可以设置为选项卡。选项卡ID_无对于不包含内容选项卡的浏览器窗口(例如,devtools窗口)。
隐姓埋名
布尔值。该选项卡是否位于私人浏览窗口中。
指数
整数。选项卡在其窗口中的从零开始的索引。
静音详细信息
选项卡的当前静音状态以及上次状态更改的原因。
openerTabId
整数。打开此选项卡的选项卡的ID(如果有)。只有在打开器选项卡仍然存在的情况下,此属性才存在。
被钉住的
布尔值。标签是否固定。
会话ID
字符串。用于唯一标识从会议应用程序编程接口。
地位
字符串。要么加载完成.
标题
字符串。选项卡的标题。仅当扩展具有“选项卡”权限时才显示。
网址
字符串。选项卡显示的文档的URL。仅当扩展具有“选项卡”权限时才存在。
宽度
整数。选项卡的宽度(以像素为单位)。
窗口ID
整数。承载此选项卡的窗口的ID。
浏览器外部选项卡静音详细信息
此对象包含一个布尔值,指示选项卡是否静音,以及上次状态更改的原因。
扩展ID
字符串。上次更改静默状态的扩展的ID。如果某个扩展不是上次更改静音状态的原因,则不设置。
静音
布尔值。选项卡当前是否静音。等效于是否显示静音音频指示灯。
原因
选项卡静音或取消静音的原因。如果选项卡的静音状态从未更改,则不设置。
浏览器外部选项卡连接详细信息
选项卡连接()方法。
框架Id
整数。打开指向由frameId标识的特定帧的端口,而不是选项卡中的所有帧
名称
字符串。将传入运行时.onConnect事件侦听器位于属于此扩展并在指定选项卡中运行的内容脚本中。
浏览器外部选项卡创建详细信息
tabs.create()方法。
积极的
布尔值。选项卡是否应成为窗口中的活动选项卡。不影响窗口是否聚焦。默认为true。
指数
整数。标签在窗口中的位置。提供的值将限制在零和窗口中的选项卡数之间。
openerTabId
整数。打开此选项卡的选项卡的ID。如果指定,则开始选项卡必须与新创建的选项卡位于同一窗口中。
被钉住的
布尔值。是否应固定标签。默认为false。
网址
字符串。选项卡最初导航到的URL。
窗口ID
整数。创建新选项卡的窗口。默认为当前窗口。
浏览器外部选项卡脚本和CSS详细信息
tabs.executeScript()tab.insertCSS()方法。
所有帧
布尔值。如果为true,代码将被注入当前页面的所有帧中。如果设置了true和frameId,则代码将被注入指定的帧及其所有子帧。如果为false,则代码仅注入顶部框架。默认为false。
代码
字符串。要注入的代码,作为文本字符串。
文件
字符串。包含要注入的代码的文件的路径。要跨浏览器工作,请将路径指定为绝对URL,从扩展的根开始,如下所示:“/path/To/script.js”。
框架Id
整数。应该注入代码的帧。默认为0(顶层框架)。
匹配关于空白
布尔值。如果为true,代码将被注入空白帧。默认为false。
运行于
最快将代码注入选项卡。默认为“document_idle”。
浏览器外部选项卡捕获可访问的选项卡详细信息
tabs.captureVisibleTab()方法。
图像捕获格式
结果图像的格式。默认为“jpeg”。
jpeg质量
整数。当格式为“jpeg”时,这将控制生成图像的质量。它是一个介于0和100之间的数字。如果省略,则使用92。随着质量的降低,生成的图像将具有更多的视觉伪影,并且存储它所需的字节数将减少。PNG图像将忽略此值。
浏览器外部选项卡查询详细信息
tabs.query()方法。
积极的
布尔值。选项卡在其窗口中是否处于活动状态。
听得见的
布尔值。是否能听到卡舌的声音。
当前窗口
布尔值。选项卡是否在当前窗口中。
突出显示的
布尔值。选项卡是否高亮显示。
指数
整数。选项卡在其窗口中的位置。
上次聚焦窗口
布尔值。选项卡是否位于上次聚焦的窗口中。
静音
布尔值。选项卡是否静音。
被钉住的
布尔值。标签是否固定。
地位
选项卡是否已完成加载。
标题
字符串。根据模式匹配页面标题。
网址
字符串或字符串数组。根据一个或多个匹配模式匹配制表符。请注意,片段标识符不匹配。
窗口ID
整数。父窗口的ID,或窗户。窗口ID_CURRENT用于当前窗口。
窗口类型
选项卡所在的窗口类型。
浏览器外部选项卡重新加载详细信息
提供给tabs.reload()方法。
绕过缓存
布尔值。绕过本地web缓存。默认值为false。
浏览器ExtTabSendMessageDetails
选项卡.sendMessage()方法。
框架Id
整数。将消息发送到由frameId标识的特定帧,而不是选项卡中的所有帧。
浏览器扩展选项卡更新详细信息
tabs.update()方法。
积极的
布尔值。选项卡是否应处于活动状态。不影响窗口是否聚焦
突出显示的
布尔值。在当前选择中添加或删除选项卡。
静音
布尔值。选项卡是否应静音。
openerTabId
整数。打开此选项卡的选项卡的ID。如果指定,则开始选项卡必须与此选项卡位于同一窗口中。
被钉住的
布尔值。是否应固定标签。
网址
字符串。用于导航选项卡的URL
浏览器ExtTabIdWindowId
tabs.onActivated()回调。
选项卡Id
整数。已激活的选项卡的ID。
窗口ID
整数。选项卡窗口的ID。
浏览器外部选项卡窗口ID窗口关闭
tabs.onRemoved()回调。
是窗口关闭
布尔值。如果选项卡因窗口关闭而关闭,则为true。
窗口ID
整数。选项卡已关闭的窗口。
浏览器ExtTabsOnUpdatedChangeDetails
tabs.onUpdate()回调。
可听的
布尔值。标签的新声音状态。
常用图标URL
字符串。该选项卡的新favicon URL。
静音详细信息
选项卡的新静音状态以及更改的原因。
被钉住的
布尔值。选项卡的新固定状态。
地位
字符串。选项卡的状态。可以是加载或完成。
标题
字符串。页面的标题文本字符串。
网址
字符串。选项卡的URL(如果已更改)。
浏览器ExtTabsOnActivatedCallback
回拨tabs.onActivated()事件。
浏览器ExtTabsOnCreatedCallback
回调tabs.onCreated()事件。
浏览器ExtTabsOnRemovedCallback
回调tabs.onRemoved()事件。
浏览器ExtTabsOnUpdatedCallback
回调tabs.onUpdate()事件。
浏览器外部浏览器选项卡
的定义浏览器.tabs对象。
捕获可见选项卡
创建数据URI,对指定窗口中当前活动选项卡的可见区域的图像进行编码。您必须具有<all_urls>权限才能使用此方法。这是一个返回Promise的异步函数。
连接
调用此函数可在扩展的后台脚本(或其他特权脚本,如弹出脚本或选项页脚本)和属于此扩展并在指定选项卡中运行的任何内容脚本之间建立连接。
创造
创建一个新选项卡。这是一个异步函数,返回Promise。
执行脚本
将JavaScript代码注入页面。要使用此API,您必须具有页面URL的权限,可以显式地作为主机权限,也可以使用activeTab权限。
得到
给定一个选项卡ID,以选项卡。选项卡对象。这是一个返回Promise的异步函数。
获取当前
获取选项卡。选项卡包含有关运行此脚本的选项卡的信息。您可以在有浏览器选项卡的上下文中调用此函数,例如选项页。如果从后台脚本或弹出窗口调用它,它将返回未定义的。这是一个返回Promise的异步函数。
插入CSS
将CSS注入页面。要使用此API,您必须具有页面URL的权限,可以显式地作为主机权限,也可以使用activeTab权限。您只能将CSS插入到URL可以使用匹配模式表示的页面中:这意味着其方案必须是“http”、“https”、“file”和“ftp”之一。可以通过调用tabs.removeCSS()再次删除插入的CSS。这是一个返回Promise的异步函数。
onActivated(启用)
当窗口中的活动选项卡更改时激发。请注意,此事件启动时可能未设置选项卡的URL,但您可以收听tabs.on更新设置URL时要通知的事件。
创建时
创建选项卡时激发。请注意,在触发此事件时,选项卡的URL可能不会给出其最终值。浏览器可能会在加载新页面之前创建一个带有临时URL(如“about:blank”)的新选项卡tabs.on更新设置URL时要通知的事件。
on删除
关闭选项卡时激发。
on更新
更新选项卡时激发。
查询
获取具有指定属性的所有选项卡,如果未指定属性,则获取所有选项卡。这是一个返回Promise的异步函数。
重新加载
重新加载选项卡,可以选择绕过本地web缓存。这是一个返回Promise的异步函数。
去除
关闭一个或多个选项卡。这是一个返回Promise的异步函数。
发送消息
从扩展的后台脚本(或其他特权脚本,如弹出脚本或选项页脚本)以及属于此扩展并在指定选项卡中运行的任何内容脚本发送单个消息。消息将由runtime.onMessage事件的任何侦听器在内容脚本中接收。然后,侦听器可以选择使用sendResponse参数将响应发送回后台脚本。这是一个返回Promise的异步函数。
更新
将选项卡导航到新的URL,或修改选项卡的其他属性。要使用此函数,请传递要更新的选项卡的ID,以及包含要更新的属性的updateProperties对象。中未指定的属性浏览器扩展选项卡更新详细信息未修改。这是一个返回Promise的异步函数。
浏览器外部选项卡API
的接口浏览器.tabs对象。
选项卡
这个浏览器.tabs对象。

这个Web导航对象

概述

这个Web导航对象用于监视与网络请求相关的事件。

显示

这个“网络导航”使用此对象需要权限。

{“权限”:[//必需“webNavigation”//必需]//必需}

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

enum BrowserExtTransitionType{“链接”,“类型化”};字典浏览器外部Web导航打开前导航详细信息{长帧Id;长parentFrameId;长选项卡Id;双时间戳;DOMString url;};字典浏览器ExtWebNavigationOnCommittedDetails{长帧Id;长进程ID;长选项卡Id;双时间戳;转换类型转换类型;DOMString url;};字典浏览器ExtWebNavigationOnCompletedDetails{长帧Id;长进程ID;长选项卡Id;双时间戳;DOMString url;};字典浏览器ExtWebNavigationOnDOMContentLoadedDetails{长帧Id;长进程ID;长标签ID;双时间戳;DOMString url;};字典浏览器ExtWebNavigationOnErrorOccurredDetails{DOMString错误;长帧Id;长标签ID;双时间戳;DOMString url;};字典浏览器ExtWebNavigationOnReferenceFragmentUpdatedDetails{长帧Id;长进程ID;长选项卡Id;双时间戳;浏览器ExtTransitionType转换类型;DOMString url;};回调BrowserExtWebNavigationOnBeforeNavigateCallback=void(BrowserextWebNavigation OnBefore NavigateDetails详细信息);callback BrowserExtWebNavigationOnCommittedCallback=void(BrowserExtWebNavigationOnCommittedDetails详细信息);回调BrowserExtWebNavigationOnCompletedCallback=void(BrowserextWebNavigtionOnCompleted详细信息);回调BrowserExtWebNavigationOnDOMContentLoadedCallback=void(BrowserextWebNavigtionOnDOMCentLoaded详细信息);回调BrowserExtWebNavigationOnErrorOccurredCallback=void(BrowserextWebNavigtionOnErrorocurredDetails详细信息);回调BrowserExtWebNavigationOnReferenceFragmentUpdated=void(BrowserextWebNavigation OnReference FragmentUpdate详细信息);[无接口对象]界面BrowserExtBrowserWebNavigation{void onBeforeNavigate(浏览器ExtWebNavigationOnBeforeNavigateCallback回调);void onCommitted(BrowserExtWebNavigationOnCommittedCallback回调);void onCompleted(BrowserExtWebNavigationOnCompletedCallback回调);void onDOMContentLoaded(BrowserExtWebNavigationOnDOMContent LoadedCallback回调);void onErrorOccurred(BrowserExtWebNavigationOnErrorOcurredCallback回调);void onReferenceFragmentUpdated(BrowserExtWebNavigationOnReferenceFagmentUplated回调);};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExtWebNavigation_]界面BrowserExtWebNavigationAPI{只读属性BrowserExtWebNavigation webNavigation;};浏览器实现BrowserExtWebNavigationAPI;

定义

浏览器ExtTransitionType
导航原因。例如,用户单击了链接或键入了地址。
链接
用户单击了另一个页面中的链接。
键入
用户在地址栏中键入了URL。如果用户开始在地址栏中键入内容,然后从提供的建议中选择URL,也可以使用此选项。
浏览器ExtWebNavigationOnBeforeNavigateDetails
webNavigation.onBeforeNavigate回调。
框架Id
整数。即将发生导航的帧。0表示导航发生在选项卡的顶级浏览上下文中,而不是嵌套的iframe中。正值表示导航发生在嵌套的iframe中。对于给定的选项卡和进程,帧ID是唯一的。
父框架ID
整数。此帧父帧的ID。如果这是顶级帧,请设置为-1。
选项卡ID
整数。将要进行导航的选项卡的ID。
时间戳
数字。浏览器即将开始导航的时间,以纪元后的毫秒为单位。
网址
字符串。给定帧将导航到的URL。
浏览器ExtWebNavigationOnCommittedDetails
提供给webNavigation.onCommitted(webNavigation)回调。
框架Id
整数。导航将在其中发生的帧。0表示导航发生在选项卡的顶级浏览上下文中,而不是嵌套的iframe中。正值表示导航发生在嵌套的iframe中。对于给定的选项卡和进程,帧ID是唯一的。
进程ID
整数。呈现此选项卡的进程的ID。
选项卡Id
整数。将要进行导航的选项卡的ID。
时间戳
数字。提交导航的时间,以纪元后的毫秒为单位。
转换类型
导航的原因:例如,如果用户单击了链接,则为“链接”;如果用户重新加载了页面,则是“重新加载”。
网址
字符串。给定帧将导航到的URL。
浏览器外部Web导航完成详细信息
webNavigation.on已完成回调。
框架Id
整数。发生导航的帧。0表示导航发生在选项卡的顶级浏览上下文中,而不是嵌套的iframe中。正值表示导航发生在嵌套的iframe中。对于给定的选项卡和进程,帧ID是唯一的。
进程ID
整数。呈现此选项卡的进程的ID。
选项卡Id
整数。发生导航的选项卡的ID。
时间戳
数字。页面完成加载的时间,以纪元后的毫秒为单位。
网址
字符串。给定帧导航到的URL。
浏览器ExtWebNavigationOnDOMContentLoadedDetails
webNavigation.onDOM内容已加载回调。
框架Id
整数。导航发生的帧。0表示导航发生在选项卡的顶级浏览上下文中,而不是嵌套的iframe中。正值表示导航发生在嵌套的iframe中。对于给定的选项卡和进程,帧ID是唯一的。
进程ID
整数。呈现此选项卡的进程的ID。
选项卡Id
整数。发生导航的选项卡的ID。
时间戳
数字。触发DOMContentLoaded的时间,以纪元后的毫秒为单位。
网址
字符串。给定帧导航到的URL。
浏览器ExtWebNavigationOnErrorOccurredDetails
提供给webNavigation.onError发生回调。
错误
字符串。错误代码。这是一个内部错误代码,不保证在不同浏览器之间保持不变或一致。
框架Id
整数。导航发生的帧。0表示导航发生在选项卡的顶级浏览上下文中,而不是嵌套的iframe中。正值表示导航发生在嵌套的iframe中。对于给定的选项卡和进程,帧ID是唯一的。
选项卡Id
整数。发生导航的选项卡的ID。
时间戳
数字。触发DOMContentLoaded的时间,以纪元后的毫秒为单位。
网址
字符串。给定帧导航到的URL。
浏览器ExtWebNavigationOnReferenceFragmentUpdatedDetails
webNavigation.onReferenceFragment已更新回调。
框架Id
整数。导航将在其中发生的帧。0表示导航发生在选项卡的顶级浏览上下文中,而不是嵌套的iframe中。正值表示导航发生在嵌套的iframe中。对于给定的选项卡和进程,帧ID是唯一的。
进程ID
整数。呈现此选项卡的进程的ID。
选项卡Id
整数。将要进行导航的选项卡的ID。
时间戳
数字。提交导航的时间,以纪元后的毫秒为单位。
转换类型
转换类型。导航的原因:例如,如果用户单击链接,则显示“链接”
网址
字符串。给定帧将导航到的URL。
浏览器外部Web导航打开前导航回调
这个webNavigation.onBeforeNavigate回调。
浏览器ExtWebNavigationOnCommittedCallback
这个webNavigation.onCommittedCallback(webNavigation)回调。
浏览器ExtWebNavigationOnCompletedCallback
这个webNavigation.onCompleted回调回调。
浏览器ExtWebNavigationOnDOMContentLoadedCallback
这个webNavigation.onDOMContentLoaded回调回调。
浏览器ExtWebNavigationOnErrorOccurredCallback
这个webNavigation.onErrorOccurred回调回调。
BrowserExtWebNavigationOnReferenceFragment已更新
这个webNavigation.onReferenceFragment已更新回调。
浏览器外部浏览器Web导航
的定义浏览器.web导航对象。
onBefore导航
当浏览器即将启动导航事件时激发。
未承诺
提交导航时激发。至少已从服务器接收到部分新文档,并且浏览器已决定切换到新文档。
完成时
当文档(包括其引用的资源)完全加载和初始化时激发。这相当于DOM加载事件。
onDOM内容已加载
DOM内容已加载事件在页面中激发。此时,文档被加载和解析,DOM被完全构造,但链接的资源(如图像、样式表和子框架)可能尚未加载。
发生错误时
发生错误且导航中止时激发。如果发生网络错误或用户中止导航,则可能会发生这种情况。
onReferenceFragment已更新
在页面的片段标识符更改时激发。例如,如果一个页面使用片段实现了一个目录,并且用户单击了目录中的一个条目,则会触发此事件。此框架的所有未来事件都将使用更新的URL。

浏览器ExtWebNavigationAPI
的接口浏览器.web导航对象。
网络导航
这个浏览器.web导航对象。

这个Web请求对象

概述

这个Web请求对象用于修改或取消网络请求。

显示

这个“网络请求”使用此对象需要权限。

{“权限”:[//必需“webRequest”//必需“webRequestBlocking”//可选“<URL pattern>”//可选,例如“*://*.w3.org/”]//必需}

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

enum BrowserExtResourceType{“font”,“image”,“main_frame”,“object”,“other”,”ping“,”script“,”stylesheet“,”sub_frame“,”xmlhttprequest“};字典浏览器ExtWebRequestUploadDetails{任何字节;DOMString?文件;};字典浏览器ExtWebRequestRequestBody{DOMString?误差;对象?表单数据;序列<BrowserExtWebRequestUploadData>?原始数据;};字典浏览器ExtWebRequestHttpHeader{DOMString keyName;任何值;};字典浏览器ExtWebRequestHttpHeaders{序列<BrowserExtWebRequestHttpHeader>data;};字典浏览器ExtWebRequestOnBeforeRequestDetails{长帧Id;DOMString方法;长parentFrameId;浏览器ExtWebRequestRequestBody?请求正文;DOMString请求ID;长选项卡Id;双时间戳;BrowserExtResourceType类型;DOMString url;};字典浏览器ExtWebRequestOnBeforeSendHeaders详细信息{长帧Id;DOMString方法;长parentFrameId;浏览器ExtWebRequestHttpHeaders?requestHeaders;DOMString请求ID;长标签ID;双时间戳;BrowserExtResourceType类型;DOMString url;};字典浏览器ExtWebRequestOnCompletedDetails{长帧Id;布尔fromCache;DOMString方法;长parentFrameId;DOMString请求ID;浏览器ExtWebRequestHttpHeaders?responseHeaders;DOMString?服务器IP;长状态代码;DOMString statusLine;长选项卡Id;双时间戳;BrowserExtResourceType类型;DOMString url;};字典浏览器ExtWebRequestOnHeadersReceivedDetails{长帧Id;DOMString方法;长parentFrameId;DOMString请求ID;浏览器ExtWebRequestHttpHeaders?responseHeaders;长状态代码;DOMString statusLine;长选项卡Id;双重时间戳;BrowserExtResourceType类型;DOMString url;};字典浏览器ExtWebRequestOnSendHeadersDetails{长帧Id;DOMString方法;长parentFrameId;浏览器ExtWebRequestHttpHeaders?requestHeaders;DOMString请求ID;长选项卡Id;双时间戳;BrowserExtResourceType类型;DOMString url;};回调BrowserExtWebRequestOnBeforeRequestCallback=void(BrowserextWebRequestonBefore请求详细信息);回调BrowserExtWebRequestOnBeforeSendHeadersCallback=void(BrowserextWebRequestonBeforesendHeaders详细信息);回调BrowserExtWebRequestOnCompletedCallback=void(BrowserExtWebRequestOnCompletedDetails详细信息);回调BrowserExtWebRequestOnHeadersReceivedCallback=void(BrowserExtWebRequestOnHeadersReceivedDetails详细信息);callback BrowserExtWebRequestOnSendHeadersCallback=void(浏览器ExtWebRequest OnSendheadersDetails详细信息);[无接口对象]接口BrowserExtBrowserWebRequest{void onBeforeRequest(BrowserExtWebRequestOnBefore请求回调);void onBeforeSendHeaders(BrowserExtWebRequestOnBeforeSendHeadersCallback回调);void onCompleted(BrowserExtWebRequestOnCompletedCallback回调);void onHeadersReceived(BrowserExtWebRequestOnHeadersReceivedCallback回调);void onSendHeaders(函数回调);};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExtWebRequest_]接口浏览器ExtWebRequestAPI{只读属性BrowserExtWebRequest webRequest;};浏览器实现BrowserWebRequestAPI;

定义

浏览器外部资源类型
此类型是一个字符串,表示在web请求中获取的特定类型的资源。它用于过滤您使用webRequest API侦听的请求。例如:您可以只侦听图像请求,也可以只侦听脚本请求。
字体
火灾浏览器.webRequest字体请求的事件。
形象
火灾浏览器.webRequest图像请求的事件。
主框架(_F)
火灾browser.web请求主框架请求的事件。
对象
火灾浏览器.webRequest对象请求的事件。
其他
火灾浏览器.webRequest此处未声明的类型请求的事件。
ping(ping)
火灾browser.web请求ping请求的事件。
脚本
火灾浏览器.webRequest脚本请求的事件。
样式表
火灾浏览器.webRequest样式表请求的事件。
子帧(_F)
火灾浏览器.webRequest子帧请求的事件。
xmlhttprequest(xmlhttp请求)
火灾浏览器.webRequestxmlhttprequest请求的事件。
浏览器ExtWebRequestUploadDetails
包含URL请求中上载的数据。
字节
任何。带有数据副本的ArrayBuffer。
文件
字符串。包含文件路径和名称的字符串
浏览器ExtWebRequestRequestBody
对象。包含HTTP请求正文数据。
错误
字符串。如果在获取请求正文数据时遇到任何错误,则设置此选项。
表单数据
对象。如果请求方法是POST,并且主体是一系列用UTF-8编码为“multipart/form-data”或“application/x-www-form-urlencoded”的键值对,则会出现此对象。
原始数据
webRequest数组。上传数据。如果请求方法是PUT或POST,并且正文尚未在formData中解析,则此数组包含未解析的请求正文元素。
浏览器ExtWebRequestHttpHeader
每个标题都表示为具有两个属性的对象:名称和值。
密钥名称
字符串。HTTP标头的名称。
价值
字符串。HTTP标头的值(如果可以用UTF-8表示)。
浏览器ExtWebRequestHttpHeaders
HTTP标头数组。
数据
HTTP标头数据。
浏览器ExtWebRequestOnBeforeRequestDetails
有关请求的信息。
框架Id
整数。如果请求发生在主框架中,则为零;正值是发生请求的子帧的ID。如果加载了(子)框架的文档(类型为main_frame或sub_frame),则frameId指示此框架的ID,而不是外部框架的ID。帧ID在选项卡中是唯一的。
方法
字符串。标准HTTP方法:例如“GET”或“POST”。
父框架ID
整数。包含发送请求的帧的帧的ID。如果不存在父帧,则设置为-1。
请求正文
包含HTTP请求正文数据。
请求ID
字符串。请求的ID。请求ID在浏览器会话中是唯一的,因此您可以使用它们关联与同一请求关联的不同事件。
选项卡Id
整数。发生请求的选项卡的ID。如果请求与选项卡无关,则设置为-1。
时间戳
数字。此事件触发的时间,以纪元后的毫秒为单位。
类型
请求的资源类型:例如,“image”、“script”、“stylesheet”。
网址
字符串。触发此请求的资源的URL。请注意,这可能与请求的资源将加载到的页面的URL不同。例如,如果一个文档通过链接的target属性触发了另一个窗口中的加载,或者CSS文档包含使用url()函数表示法的图像,那么这将分别是原始文档或CSS文档的url。
浏览器ExtWebRequestOnBeforeSendHeaders详细信息
有关请求的信息。
框架Id
整数。如果请求发生在主机中,则为零;正值是发生请求的子帧的ID。如果加载了(子)框架的文档(类型为main_frame或sub_frame),则frameId指示此框架的ID,而不是外部框架的ID。帧ID在选项卡中是唯一的。
方法
字符串。标准HTTP方法:例如,“GET”或“POST”。e(电子)
父框架ID
整数。包含发送请求的帧的帧的ID。如果不存在父帧,则设置为-1。
请求标头
将与此请求一起发送的HTTP请求标头。
请求ID
字符串。请求的ID。请求ID在浏览器会话中是唯一的,因此您可以使用它们关联与同一请求关联的不同事件。
选项卡Id
整数。发生请求的选项卡的ID。如果请求与选项卡无关,则设置为-1。
时间戳
数字。此事件触发的时间,以纪元后的毫秒为单位。
类型
请求的资源类型:例如,“image”、“script”、“stylesheet”。
网址
字符串。请求的目标。
浏览器ExtWebRequestOnCompleted详细信息
有关请求的信息。
框架Id
整数。如果请求发生在主机中,则为零;正值是发生请求的子帧的ID。如果加载了(子)框架的文档(类型为main_frame或sub_frame),则frameId指示此框架的ID,而不是外部框架的ID。帧ID在选项卡中是唯一的。
从缓存
布尔值。指示此响应是否是从磁盘缓存中提取的。
方法
字符串。标准HTTP方法:例如“GET”或“POST”。
父框架ID
整数。包含发送请求的帧的帧的ID。如果不存在父帧,则设置为-1。
请求ID
字符串。请求的ID。请求ID在浏览器会话中是唯一的,因此您可以使用它们关联与同一请求关联的不同事件。
响应标题
与此响应一起接收的HTTP响应标头。
被控对象
请求实际发送到的服务器IP地址。请注意,它可能是一个文字IPv6地址。
状态代码
整数。服务器返回的标准HTTP状态代码。
状态行
字符串。响应的HTTP状态行或HTTP/0.9响应的“HTTP/0.9200OK”字符串(即,缺少状态行的响应)或空字符串(如果没有标头)。
选项卡Id
整数。发生请求的选项卡的ID。如果请求与选项卡无关,则设置为-1。
时间戳
数字。此事件触发的时间,以纪元后的毫秒为单位。
类型
请求的资源类型:例如,“image”、“script”、“stylesheet”。
网址
字符串。请求的目标。
浏览器ExtWebRequestOnHeadersReceivedDetails
有关请求的信息。
框架Id
整数。如果请求发生在主机中,则为零;正值是发生请求的子帧的ID。如果加载了(子)框架的文档(类型为main_frame或sub_frame),则frameId指示此框架的ID,而不是外部框架的ID。帧ID在选项卡中是唯一的
方法
字符串。标准HTTP方法:例如“GET”或“POST”。
父框架ID
整数。包含发送请求的帧的帧的ID。如果不存在父帧,则设置为-1。
请求ID
字符串。请求的ID。请求ID在浏览器会话中是唯一的,因此您可以使用它们关联与同一请求关联的不同事件。
响应标题
为此请求接收的HTTP响应标头。
状态代码
整数。服务器返回的标准HTTP状态代码。
状态行
字符串。响应的HTTP状态行或HTTP/0.9响应的“HTTP/0.9200OK”字符串(即缺少状态行的响应)。
选项卡Id
整数。发生请求的选项卡的ID。如果请求与选项卡无关,则设置为-1。
时间戳
数字。此事件触发的时间,以纪元后的毫秒为单位。
类型
请求的资源类型:例如,“image”、“script”、“stylesheet”。
网址
字符串。请求的目标。
浏览器ExtWebRequestOnSendHeaders详细信息
有关请求的信息。
框架Id
整数。如果请求发生在主机中,则为零;正值是发生请求的子帧的ID。如果加载了(子)框架的文档(类型为main_frame或sub_frame),则frameId指示此框架的ID,而不是外部框架的ID。帧ID在选项卡中是唯一的。
方法
字符串。标准HTTP方法:例如“GET”或“POST”。
父框架ID
整数。包含发送请求的帧的帧的ID。如果不存在父帧,则设置为-1。
请求标头
随此请求发送的HTTP请求标头。
请求ID
字符串。请求的ID。请求ID在浏览器会话中是唯一的,因此您可以使用它们关联与同一请求关联的不同事件。
选项卡Id
整数。发生请求的选项卡的ID。如果请求与选项卡无关,则设置为-1。
时间戳
数字。此事件触发的时间,以纪元后的毫秒为单位。
类型
请求的资源类型:例如,“image”、“script”、“stylesheet”。
网址
触发此请求的资源的URL。请注意,这可能与请求的资源将加载到的页面的URL不同。例如,如果一个文档通过链接的target属性触发了另一个窗口中的加载,或者CSS文档包含使用url()函数表示法的图像,那么这将分别是原始文档或CSS文档的url。
浏览器ExtWebRequestOnBeforeRequestCallback
这个webRequest.onBeforeRequestCallback回调。
浏览器ExtWebRequestOnBeforeSendHeadersCallback
这个web请求.onBeforeSendHeadersCallback回调。
浏览器ExtWebRequestOnCompletedCallback
这个webRequest.onCompleted回拨回调。
浏览器ExtWebRequestOnHeadersReceivedCallback
这个webRequest.onHeadersReceivedCallback回调。
浏览器ExtWebRequestOnSendHeadersCallback
这个webRequest.onSendHeaders回拨回调。
浏览器ExtBrowserWebRequest
的描述浏览器.webRequest对象。
onBefore请求
当即将发出请求且标头可用之前,会触发此事件。如果您想取消或重定向请求,这是一个很好的倾听位置。
onBeforeSendHeaders上
此事件在发送任何HTTP数据之前触发,但在所有HTTP标头可用之后触发。如果您想修改HTTP请求头,这是一个很好的地方。
完成时
请求完成时激发。
onHeaders已接收
收到与请求关联的HTTP响应标头时激发。您可以使用此事件修改HTTP响应标头。
onSendHeaders(发送邮件头)
此事件在发送标头之前触发。如果您的扩展或其他扩展修改了onBeforeSendHeaders中的头,您将在此处看到修改后的版本。
浏览器外部Web请求API
的接口浏览器.webRequest对象。
Web请求
这个浏览器.webRequest对象。

这个窗户对象

概述

这个窗户对象用于访问由浏览器管理的UI窗口。

显示

扩展使用此对象不需要其他清单条目。

上下文

此API在窗口上下文(背景、事件、弹出窗口、选项和自定义页面)中可用。

WebIDL定义

特殊情况说明WebIDL语法注意事项对于浏览器扩展,在本文档的其他地方进行了定义。

enum BrowserExtWindowsWindowType{“detached_panel”,“normal”,“panel”,”popup“};enum BrowserExtWindowsWindowState{“停靠”,“全屏”,“最大化”,“最小化”,“正常”};字典浏览器ExtCreateWindowDetails{布尔聚焦;长高;布尔隐姓埋名;长左;浏览器ExtWindowsWindowsState?国家;长选项卡Id;长顶;(DOMString?或序列<DOMString>?)url;长宽;浏览器扩展窗口窗口类型?windowType;};字典浏览器ExtGetWindowDetails{布尔填充;序列<BrowserExtWindowsWindowType>?窗口类型;};字典浏览器ExtWindowUpdateDetails{布尔drawAttention;布尔聚焦;长高;左长;长顶;长宽;浏览器ExtWindowState?窗口状态;};字典浏览器ExtWindowsWindow{布尔值始终位于顶部;布尔聚焦;长高;长id;布尔隐姓埋名;左长;序列<BrowserExtTabsTab>?选项卡;长顶;DOMString?sessionId;浏览器ExtWindowsWindowsState?国家;长宽;浏览器扩展窗口窗口类型?windowType;};回调BrowserExtWindowsOnFocusChangedCallback=void(长windowId);[无接口对象]界面BrowserExtWindows{承诺<BrowserExtWindowsWindow>create(CreateWindowDetails详细信息);Promise<BrowserExtWindowsWindow>get(long windowId,可选BrowserExtGetWindowDetails详细信息);Promise<sequence<BrowserExtWindowsWindow>>getAll(可选的BrowserExtGetWindowDetail详细信息);Promise<BrowserExtWindowsWindow>getCurrent(可选的BrowserExtGetWindowDetail详细信息);Promise<BrowserExtWindowsWindow>getLastFocused(可选的BrowserExtGetWindowDetail详细信息);void onFocusChanged(BrowserExtWindowsOnFocusChangerdCallback回调);承诺<BrowserExtWindowsWindow>update(长windowId,可选BrowserextWindowsUpdateDetails详细信息);};[NoInterfaceObject,Exposed=窗口,CheckAnyPermissions_browserExt_]界面浏览器ExtWindowsAPI{只读属性BrowserExtWindows窗口;};浏览器实现BrowserExtWindowsAPI;

定义

浏览器扩展窗口窗口类型
这是浏览器窗口的类型。
分离面板
浏览器窗口是一个分离的面板。
正常的
浏览器窗口是一个普通窗口。
面板
浏览器窗口是一个面板。
弹出窗口
浏览器窗口是一个弹出窗口。
浏览器扩展窗口窗口状态
此浏览器窗口的状态。
停靠的
窗口已固定。
全屏显示
窗口是全屏的。
最大化的
窗口被最大化。
最小化
窗口最小化。
正常的
窗口正常。
浏览器外部创建窗口详细信息
有关浏览器窗口的信息。
聚焦
布尔值。窗口当前是否为聚焦窗口。
高度
整数。窗口(包括框架)的高度,以像素为单位。
隐姓埋名
布尔值。窗户是否隐身。
左边
整数。窗口相对于屏幕左边缘的偏移(以像素为单位)。
状态
表示此浏览器窗口的状态-最大化、最小化等。
选项卡Id
整数。选项卡的ID。
顶部
整数。窗口与屏幕上边缘的偏移(以像素为单位)。
网址
字符串或字符串数组。要在窗口中作为选项卡打开的URL或URL数组。完全限定的URL必须包含方案。相对URL将相对于扩展中的当前页面。
宽度
整数。窗口(包括帧)的宽度,以像素为单位。
窗口类型
表示浏览器窗口的类型-普通浏览器窗口、弹出窗口等。
浏览器外部获取窗口详细信息
给定ID的窗口的详细信息。
填充
布尔值。如果为真窗户。窗口对象将具有一个包含列表的tabs属性选项卡。选项卡表示窗口中打开的选项卡的对象。如果扩展的清单文件包含“选项卡”权限,则Tab对象仅包含url、title和favIconUrl属性。
窗口类型
数组浏览器扩展窗口窗口类型
浏览器外部窗口更新详细信息
包含要更新的属性的对象。
drawAttention(提请注意)
布尔值。如果为true,则会以吸引用户注意窗口的方式显示窗口,而不会更改聚焦窗口。这种效果一直持续到用户将焦点切换到窗口。如果窗口已经有焦点,则此选项无效。设置为false可取消先前的drawAttention请求。
聚焦
布尔值。如果为true,则将窗口移到前面。如果为false,则将z顺序中的下一个窗口移到前面。
高度
整数。调整窗口大小的高度(以像素为单位)。面板将忽略此值。
左边
整数。将窗口移动到屏幕左边缘的偏移量(以像素为单位)。面板将忽略此值。
顶部
整数。将窗口移动到屏幕上边缘的偏移量(以像素为单位)。面板将忽略此值。
宽度
整数。将窗口大小调整为像素的宽度。面板将忽略此值。
窗口状态
窗口的新状态。最小化、最大化和全屏状态不能与左侧、顶部、宽度或高度组合。
浏览器扩展窗口
有关浏览器窗口的信息。
始终在最前面
布尔值。窗口是否设置为始终位于顶部。
聚焦
布尔值。窗口当前是否为聚焦窗口。
高度
整数。窗口(包括框架)的高度,以像素为单位
身份证件
整数。窗口的ID。窗口ID在浏览器会话中是唯一的。
隐姓埋名
布尔值。窗户是否隐身。
左边
整数。窗口相对于屏幕左边缘的偏移(以像素为单位)。
选项卡
的数组选项卡。选项卡表示窗口中当前选项卡的对象。
顶部
整数。窗口与屏幕上边缘的偏移(以像素为单位)。
会话ID
字符串。用于唯一标识窗口的会话ID。
状态
表示此浏览器窗口的状态-最大化、最小化等。
宽度
整数。窗口(包括帧)的宽度,以像素为单位。
窗口类型
表示浏览器窗口的类型,即正常浏览器窗口、弹出窗口等。
浏览器ExtWindowsOnFocusChangedCallback
这个浏览器.windows.onFocusChanged回调。
浏览器扩展窗口
的定义浏览器.windows对象。
创造
创建一个新窗口。
得到
获取有关给定ID的窗口的详细信息。这些详细信息将传递到回调中。这是一个返回Promise的异步函数。
获取全部
获取有关所有打开窗口的信息,并将其传递到回调中。这是一个返回Promise的异步函数。
获取当前
获取当前窗口,并将其详细信息传递到回调中。这是一个返回Promise的异步函数。
获得最新焦点
获取最近聚焦的窗口(通常为“顶部”窗口),并将其传递到回调中。这是一个返回Promise的异步函数。
onFocusChanged(焦点已更改)
当当前聚焦的窗口更改时激发。窗户。窗口ID_NONE如果所有浏览器窗口都失去了焦点。
更新
更新窗口的属性。使用此选项可以移动、调整大小和(取消)聚焦窗口等。这是一个返回Promise的异步函数。
浏览器扩展窗口API
的接口浏览器.windows对象。
窗口
这个浏览器.windows对象。

本机消息传递

本机消息传递包含在另一个规范中。有关更多信息,请参阅浏览器扩展的本机消息传递规范[[browserext-Native]]。

事件

概述

扩展事件类似于DOM事件[DOM4公司]. 但是,扩展事件仅发送给相关扩展范围内的对象(背景、事件、选项、内容等)。扩展范围中的脚本可以通过调用addListener().

[NoInterfaceObject,Exposed=(Window,ContentScript),CheckAnyPermissions_browserExt_]界面BrowserExtEvent{void addListener(函数回调);void removeListener(函数回调);boolean hasListener(函数回调);布尔型hasListeners();};

定义

浏览器外部事件
扩展使用的事件类型
addListener(添加侦听器)
登记以便在偶发火灾时收到通知。
删除侦听器
注销通知。
hasListener
确认特定侦听器是否已注册。
有监听器
确认是否已注册任何侦听器。

消息字符串

概述

消息字符串用于宣言.json文件以及浏览器.i18n.getMessage().

预定义消息

预定义消息的访问方式与其他消息相同。标准消息的语法为:

__消息_扩展名__

预定义消息使用完全相同的语法,但消息名称前带有@@。例如:

__消息_@@ui_locale__

下表显示了不同的可用预定义消息:

消息名称描述
@@分机id扩展或应用程序ID;您可以使用此字符串为扩展内的资源构造URL。即使是未缩放的扩展也可以使用此消息。请注意,您不能在清单文件中使用此消息。
@@ui位置(_L)当前区域设置;您可以使用此字符串构造特定于本地的URL。
@@投标截止日期当前区域设置的文本方向,“ltr”表示英语等从左到右的语言,“rtl”表示阿拉伯语等从右到左的语言。
@@双向反向目录如果@@bidi_dir是“ltr”,则这是“rtl”;否则,它是“ltr”。
@@bidi_开始_边缘如果@@bidi_dir是“ltr”,那么这是“left”;否则,它是“正确的”。
@@投标结束边缘如果@@bidi_dir是“ltr”,则这是“right”;否则,它是“左”。

清单格式

预解析

符合标准的浏览器应该忽略“//”注释。忽略注释,浏览器扩展的manifest.json文件格式应该完全符合json。不支持格式错误的JSON文件。如果指定了本规范中未定义的清单键,其他浏览器可能会忽略这些键。

钥匙清单

支持的清单键的完整列表如下所示:

钥匙必需细节
“名称”必需扩展名的名称。
“版本”必需数字的字符串表示
“默认_位置”如果扩展使用区域设置,则为必填项。如果扩展不使用区域设置,则不允许请参见消息字符串浏览器.i18n有关使用区域设置和本地化资源的更多信息。
“描述”可选描述扩展的功能。
“图标”:{
“<size>”:“<filename.jpg>”
}
可选像素尺寸对和JPEG文件名的列表。这些通常用于在扩展的浏览器管理UI中显示扩展的视觉效果。浏览器可能需要特定的大小。例如,
“图标”:{
“16”:“small.jpg”,
“32”:“中等.jpg”
}
将用于高度为16像素、宽度为16像素的小JPEG(small.jpg),以及大小为32x32像素的第二个JPEG。
“开发人员”:{
“name”:“<公司>”,
“url”:“<网站>”
}
可选包括的子项“名称”“url”提供有关编写扩展的实体的信息,通常是公司或程序员名称。这个“url”子项应该指公司/程序员站点,而不是对扩展的描述。
“浏览器操作”可选

请注意,某些浏览器只允许“浏览器操作”“页面操作”,但不是同时两者

请参见浏览器.浏览器操作有关的子项的详细信息“浏览器操作”.
“页面操作”可选

请注意,某些浏览器只允许“浏览器操作”“页面操作”,但不是同时两者
请参见browser.page操作有关的子项的详细信息“页面操作”.
“浏览特定设置”:{
<browser_name>“:{
“”<key>“:”<value>“
   }
}
可选描述浏览器可能考虑的特定值。例如,特定扩展可能需要Gecko浏览器版本42或更高版本才能正常工作:
“浏览器特定设置”:{
“壁虎”:{
“严格最小版本”:“42.0”
   }
}

“背景”:{
“页面”:“<page URL>”,
“脚本”:[…],
“persistent”:布尔值,
}
可选

如果“背景”已指定,“持久”是必需的。

其他子键是可选的
自动加载页面或脚本并开始执行,而不考虑在选项卡中查看的页面。
“内容脚本”:{
“所有帧”:<boolean>,
“css”:[…],
“exclude_matches”:[…],
“js”:[…],
“匹配项”:[…],
“run_at”:<see_details>,
}
可选自动添加脚本(从“js”子键列表)或CSS(来自“css”子项列表)添加到选项卡中的每个页面。

如果所有帧(_F),字符串模式来自比赛排除_匹配项相应地用于确定修改或排除的页面内容。

的有效值“运行(_A)”“文档开始”、“文档结束”“document_idle”.

“内容安全策略”可选新策略的字符串表示形式,用于覆盖默认策略。请参见内容安全策略(CSP)了解更多信息。
“options_page”可选扩展中允许扩展用户修改扩展设置或选项的页面。
“宣言版本”可选这是不使用的
“required_keys”:[…]可选请参阅必需的密钥钥匙部分获取有关此密钥的更多信息。
“web_accessible_resources”:[…]可选此处列出的资源可以通过Internet主页访问。
“外部可连接”:[
“id”:[…],
“匹配项”:[…],
]
可选如果其他扩展或Internet宿主网站页面的扩展ID为(“ID”)或页面URL模式(“匹配项”)已指定。
“权限”:{
“活动标签”,
“上下文菜单”,
“标签”,
“网络导航”,
“webRequestBlocking”,
“<url-pattern>”,
}
可选必须指定每个子密钥才能使用关联的API。
中列出的图案<url-pattern>允许对与这些模式匹配的URL使用其他权限。请参见权限URL模式了解更多信息。

权限URL模式

这个“权限”键可以包括遵循结构的匹配模式<方案>://<主机>/<路径>,例如“*://*.w3.org/*”.特价图案“<all_urls>”也是允许的。匹配模式标识扩展请求额外特权的一组URL:

这个活动标签许可

这个“活动标签”权限允许使用浏览器.tabs仅当用户已主动启动诸如浏览器操作. The浏览器.tabs在选项卡导航到另一个页面或关闭之前,可以使用API。

被动后台扩展无法使用浏览器.tabsAPI,除非“选项卡”权限和URL模式(例如。“<all_urls>”“http://*”“*://&.w3.org/*”)在中显式声明宣言.json.

这个必需的密钥钥匙

此键是可选的,但如果指定了它,它将提供表示必须支持的清单键的字符串列表。如果加载扩展的浏览器不支持指定的密钥,则浏览器必须拒绝清单而不加载扩展。

完整示例

//符合标准的浏览器应该忽略“//”注释。无视评论,//用于浏览器扩展的manifest.json文件格式预计将完全符合json。//不支持格式错误的JSON文件。////必须忽略格式良好的JSON但未在此列出的其他清单键。////请注意,此处标记为可选的一些字段是特定于供应商的分销商店所必需的。{“name”:“您的分机名称”,//必填“version”:“您的扩展版本”,//必需“default_locale”:“en”,//如果使用区域设置,则为必填项。否则,不允许“description”:“您的分机说明”,“图标”:{…},“开发人员”:{“name”:“您的姓名或公司”,“url”:“公司网站”}//注意:有些浏览器需要扩展才能同时使用browser_action或page_action“浏览器操作”:{“default_icon”:{…},//与“图标”格式相同“default_popup”:“页面URL”,“default_title”:“标题字符串”},“page_action”:{…},//与“浏览器_操作”的格式相同“browser_specific_settings”:{“<browser_name>”:{//例如“壁虎”、“歌剧”、“边缘”“<key>”:“<value>”//示例“strict_min_version”:“42.0”,“id”:“addon@example.com"}},“背景”:{“page”:“page URL”,//只支持“page(页面)”或“scripts(脚本)”中的一个,但不能同时支持这两个“scripts”:[],//只支持“page”或“scripts“persistent”:false//如果指定了“background”,则为必填项},“内容脚本”:{“所有帧”:false,“css”:[],“exclude_matches”:[],“js”:[],“匹配项”:[],“run_at”:“document_start”//还有“document _ end”,“documentic _ idle”}“content_security_policy”:“<policy-string>”,“options_page”:“页面URL”,//可选“manifest_version”:2,//未使用“required_keys”:[],//如果浏览器无法识别此列表中的密钥,则必须//拒绝清单(例如“sidebar_action”)//反馈:重命名为“required_capabilities”“权限”:{“活动标签”,“上下文菜单”,“标签”,“网络导航”,“webRequest”,“webRequestBlocking”,“<url-pattern>”//示例“http://*/*”、“<all_urls>”},“web_accessible_resources”:[…]“外部可连接”:[“ids”:[…],//允许发送消息的其他扩展的标识符“匹配”:[…]//允许发送消息的托管网页的URL模式]                             }

扩展资源

这个浏览器文本://协议

要访问扩展中的资源,例如浏览器文本://<ext_id>/options.html,的浏览器文本://使用协议。

扩展ID

每个扩展都有一个扩展ID,该ID位于浏览器文本://协议。例如

b条行文本://MyExtension_c1wakc4j0nefm/options.html b条行文本://dfcijpibodeoenkablikkiobbdnkfki/options.html

生成这些ID的算法对于每个浏览器都是不同的。要访问这些资源,请不要硬编码特定浏览器生成的ID。相反,使用运行时.getURL()方法将相对文件名或路径转换为包含扩展名ID的绝对名称或路径。

内容安全策略(CSP)

概述

内容安全策略(CSP)旨在防止恶意代码的无意执行。规范[[CSP3]]中讨论了web内容的默认CSP。对于扩展,默认CSP为

“script-src'self';object-src'self',”

这意味着:

跨域权限

内容脚本与扩展的其余部分具有相同的跨域权限。因此,如果扩展已使用中的权限密钥请求域的跨域访问宣言.json然后,其内容脚本也可以访问该域。

内容和背景脚本通信

尽管内容脚本不能直接使用大多数扩展API,但它们可以使用消息传递API与扩展的后台脚本通信,因此可以间接访问后台脚本可以访问的所有相同API。

使用WebDriver测试扩展

浏览器供应商可能会选择在浏览器中实现WebDriver支持,以便对浏览器扩展进行自动化测试。要实现此支持,浏览器必须支持:

协议

端点列表

除了WebDriver规范[[WebDriver]]中定义的端点外,支持浏览器扩展还需要这些额外的端点。

方法 URI模板 命令
邮政 /会话/{会话ID}/浏览器文本 安装浏览器扩展
删除 /会话/{会话ID}/浏览器文本扩展ID} 卸载浏览器扩展
GET(获取) /会话/{会话ID}/浏览器文本 获取浏览器扩展
GET(获取) /会话/{会话ID}/浏览器文本/{扩展ID}/行动 获取浏览器扩展操作
邮政 /会话/{会话ID}/浏览文本/{扩展ID}/行动/ 采取浏览器扩展操作
GET(获取) /会话/{会话ID}/元素/{元素id}/浏览器文本/上下文菜单项 获取浏览器扩展上下文菜单项
邮政 /会话/{会话ID}/元素/{元素id}/浏览器文本/上下文菜单项/{菜单项Id} 选择浏览器扩展上下文菜单项
GET(获取) /会话/{会话ID}/浏览器文本/权限提示 获取浏览器扩展权限提示文本
邮政 /会话/{会话ID}/浏览器文本/权限提示/{提示ID}/行动/{提示操作} 采取浏览器扩展权限提示操作

处理错误

除了WebDriver规范[[WebDriver]]的“处理错误”部分中定义的代码外,支持浏览器扩展还需要支持以下附加错误代码:

错误代码 状态码 JSON错误代码 描述
没有这样的扩展路径 400 没有这样的扩展路径 指定的文件路径未指向磁盘上有效的浏览器扩展名。
扩展不可安装 400 扩展不可安装 由于某些原因,无法安装指定的扩展,例如其manifest.json格式错误或丢失
没有这样的浏览器扩展 400 没有这样的浏览器扩展 当前页面上没有具有给定类型的可用浏览器扩展。
没有这样的浏览器扩展操作 400 无此类浏览器操作 无法满足执行浏览器扩展操作的请求,因为对于给定的id,没有浏览器扩展操作。
没有这样的浏览器扩展上下文菜单项 400 没有这样的浏览器扩展上下文菜单项 无法完成选择扩展上下文菜单项的请求因为给定的没有匹配的扩展上下文菜单项元素。
没有这样的浏览器扩展权限提示 400 没有这样的浏览器扩展权限提示 无法完成获取权限提示信息的请求因为此时没有权限提示或请求的提示不可用。
没有这样的浏览器扩展权限提示操作 400 没有这样的浏览器扩展权限提示操作 无法完成执行指定操作的请求因为该操作不可用。

能力

除了WebDriver规范[[WebDriver]]中定义的功能外,支持浏览器扩展还需要在服务器功能JSON对象:

"启用浏览器扩展"
指向浏览器扩展文件位置的绝对路径数组。这条路必须指向适用于特定浏览器的单个文件(例如.crx)或包含扩展源文件的文件夹。如果指定了文件夹,则文件夹本身必须包含一个宣言.json文件。子文件夹包含宣言.json不会搜索文件。

延长使用寿命

在WebDriver会话期间,不会安装或预加载浏览器扩展,除非在启用浏览器扩展数组。会话期间加载的浏览器扩展将不可用于不属于WebDriver会话的浏览器的其他活动实例。会话结束时,将卸载并卸载浏览器扩展数组。

浏览器扩展命令

用户通过多种方式与扩展交互。首先,浏览器的UI中嵌入了一些操作,这些操作可以直接执行某些操作或打开弹出窗口。如果扩展使用弹出窗口,它可以包含任何html内容。最后,扩展可以向浏览器的上下文菜单添加项。WebDriver需要能够模拟所有三个控件的用户操作,以便完全模拟用户交互。

除了WebDriver规范[[WebDriver]]中定义的命令外,支持浏览器扩展还需要以下附加命令。

安装浏览器扩展()

HTTP方法 路径模板 注意事项
邮政 /会话/{会话ID}/浏览器文本

此命令在运行时从磁盘安装任意数量的指定扩展

的值扩展路径属性必须是指向浏览器扩展文件位置的绝对路径数组。这条路必须指向适用于特定浏览器的单个文件(例如.crx)或包含扩展源文件的文件夹。如果指定了文件夹,则文件夹本身必须包含一个宣言.json文件。子文件夹包含宣言.json不会搜索文件。

如果扩展路径属性无效没有这样的扩展路径必须返回状态代码。

如果安装了扩展路径属性失败扩展不可安装必须返回状态代码。

卸载浏览器扩展()

HTTP方法 路径模板 注意事项
删除 /会话/{会话ID}/浏览文本/{扩展ID}

此命令卸载指定浏览会话中的扩展。

DOMString扩展ID
要从会话中卸载的浏览器扩展的唯一标识符。

如果指定的extensionId与当前会话中的浏览器扩展不对应没有这样的浏览器扩展必须返回状态代码。

获取浏览器扩展()

HTTP方法 路径模板 注意事项
GET(获取) /会话/{会话ID}/浏览器文本

此命令返回当前浏览会话可用的所有浏览器扩展的列表。

  • 延伸是一个新的JSON对象。

  • 设置属性身份证件延伸字符串,对于每个浏览器扩展都是唯一的。

  • 设置属性名称延伸与浏览器扩展对应的字符串“名称”报关进口宣言.json.

获取浏览器扩展操作()

HTTP方法 路径模板 注意事项
GET(获取) /会话/{会话ID}/浏览器文本/{扩展ID}/行动

此命令返回浏览器扩展操作列表可用于特定的浏览器扩展。请注意,这可以在不同的页面上更改。它必须返回描述可用浏览器扩展的对象列表每个动作使用以下算法:

  • 行动是一个新的JSON对象。

  • 设置属性类型行动表示浏览器扩展操作类型的字符串

  • 设置属性action标题行动鼠标悬停在操作的文本上。

  • 设置属性图标行动图标文件的文件名或空字符串(如果没有显示)。如果图标是动态生成的,当前图标必须作为使用Base64编码的无损PNG图像。

  • 如果操作支持徽标文本属性,设置属性徽章文本行动操作上显示的徽章文本或空字符串(如果不存在)。

  • 返回成功使用数据行动

DOMString扩展ID
要查询其可用操作的浏览器扩展的唯一标识符。由返回获取浏览器扩展()命令。

如果指定的id与当前会话中的浏览器扩展不对应没有这样的浏览器扩展必须返回状态代码。

takeBrowserExtAction()

HTTP方法 路径模板 注意事项
邮政 /会话/{会话ID}/浏览器文本/操作/{浏览器ExtActionId}

此命令会激活浏览器扩展操作。取决于扩展操作类型指定,此将具有以下几种效果之一:

扩展操作类型 效果
浏览器操作 这个扩展操作类型激活浏览器操作,就好像用户在浏览器的chrome中点击了浏览器扩展的browserAction图标一样。根据浏览器扩展,这可能会导致弹出窗口打开。
页面操作 这个扩展操作类型激活pageAction,就像用户单击了浏览器地址栏中浏览器扩展的pageAction图标一样。根据浏览器扩展,这可能会导致弹出窗口打开。
使可能 这个扩展操作类型导致启用指定的扩展,就像用户从浏览器的管理UI打开了扩展一样。如果扩展名已启用,则此命令无效。
使残废 这个扩展操作类型导致禁用指定的扩展,就像用户从浏览器的管理UI中关闭了扩展一样。如果扩展名已禁用,此命令无效。
DOMString浏览器ExtId
要调用其可用操作的浏览器扩展的唯一标识符。由返回获取浏览器扩展()命令。

如果指定的extensionId与当前会话中的浏览器扩展不对应没有这样的浏览器扩展必须返回状态代码。

DOMString扩展ActionType
返回的要执行的浏览器扩展操作的类型获取浏览器扩展操作()命令。此值应该是以下之一:“页面操作", "浏览器操作", "使可能“,或”使残废"

如果指定的类型与浏览器中/当前页面上可用的浏览器扩展操作不对应,则没有这样的浏览器扩展操作必须返回状态代码。

获取浏览器外部上下文菜单项()

HTTP方法 路径模板 注意事项
GET(获取) /会话/{会话ID}/元素/{元素Id}/浏览器文本/上下文菜单项

此命令打开的上下文菜单给定元素。它必须返回描述对每个菜单使用以下算法的可用上下文菜单项项目:

  • 菜单项是一个新的JSON对象。

  • 设置属性身份证件菜单项当前会话唯一的字符串。

  • 设置属性菜单项标题菜单项UI中显示的文本。

  • 设置属性图标菜单项图标文件的文件名或空字符串(如果没有显示)。如果由于上下文菜单项的类型(例如单选按钮或复选框)图标必须设置属性到与该类型和状态的所有图标一致的字符串(例如选中),包括跨会话。

  • 设置属性起源菜单项项的父项id或空字符串(如果菜单项没有)父母。

  • 设置属性项目类型菜单项设置为标识控件类型的字符串值。

    字符串值 描述
    复选框 复选框元素
    正常的 标准menuItem元素(文本标签)
    收音机 无线电元件。在单选组中,只有一个menuItem的值为真的
    分离器 水平行分隔符,通常用于相关项组(如单选组)之间
  • 设置属性项已检查菜单项转换为布尔值,表示下表所示的项目状态。这仅适用于itemType的项复选框收音机。在单选组中,只有一个menuItem的值为真的.

    布尔值 描述
    真的 挑选出来的
    未选择
  • 返回成功使用数据菜单项

此列表必须包含由浏览器扩展和添加的所有上下文菜单项不得包含任何其他上下文菜单项。

运行此命令后,上下文菜单必须保持打开,直到下一个命令(例如单击、导航)已经运行。

WebElement元素ID
应为其打开上下文菜单的元素的id。

选择浏览器外部上下文菜单项()

HTTP方法 路径模板 注意事项
邮政 /会话/{会话ID}/元素/{元素Id}/浏览器文本/上下文菜单项/{菜单项Id}

此命令会导致上下文菜单要选择的项。这必须与用户单击或在打开的上下文菜单中单击项目。如果菜单项是其他菜单项的父项,则此命令可以打开子菜单,但不得有任何其他效果。

即使没有上下文菜单打开,也必须执行此命令。

字符串menuitemId
上下文菜单项id,由获取浏览器外部上下文菜单项()命令。

如果当前没有打开上下文菜单没有这样的扩展上下文菜单项必须返回状态代码。

获取浏览器外部权限提示()

HTTP方法 路径模板 注意事项
GET(获取) /会话/{会话ID}/浏览器文本/权限提示

安装浏览器扩展后,浏览器可能会通知用户该扩展的潜在隐私相关功能。例如,如果扩展宣言.json请求“选项卡”“网络导航”权限,则浏览器可能会请求用户确认这些权限。此命令返回一个JSON对象,其中包含需要用户确认的权限名称和有关提示的其他信息。如果扩展已更新,并且更新的版本需要额外的许可,也可能会出现类似的提示。如果调用此API时没有提示,则会出现错误“没有这样的浏览器扩展权限提示“返回。

  • 权限提示是一个新的JSON对象。
  • 设置属性提示ID到每次显示提示时唯一的字符串。
  • 设置属性提示消息文本指向一个字符串,该字符串表示显示给用户的文本,本地化为中指定的默认区域设置宣言.json.
  • 设置属性提示默认区域设置设置为中指定的默认区域设置代码宣言.json。如果扩展未使用区域设置,则应省略属性,但可以返回空字符串(“”)。
  • 设置属性提示请求URL到表示相关URL的字符串。此处返回的字符串与“权限”:[]第节,共节马尼塞斯特·杰森。如果URL不适用于提示符,则应省略属性,但也可以返回空字符串(“”)。
  • 设置属性提示权限与请求的权限相对应的字符串数组。此处返回的字符串与“权限”:[]第节,共节马尼塞斯特·杰森。如果权限不适用于提示符,则应省略属性,但可以包括空数组([])或空字符串数组([“”])。
  • 设置属性提示操作对应于用户可能采取的操作的字符串数组。行动允许否认是必需的。可以返回其他可选值,但本规范中没有规定行为。
提示操作 必需 描述
允许 必需 允许扩展使用或访问功能或站点
否认 必需 拒绝扩展对请求的功能或站点的使用。的浏览器实现否认本规范中没有规定,可能会导致延长装置的安装被取消。
解雇 可选 某些浏览器可能为用户提供了一个选项,可以关闭提示,而无需使用接受否认行动。的浏览器实现解雇本规范中没有规定,可能会导致延长装置的安装被取消。
{自定义} 可选 一些浏览器可能提供本表中未规定的其他选项。例如,始终允许,allow一次仅允许此站点使用可以在权限提示中显示。本规范中未规定这些自定义操作的浏览器实现。

takeBrowserExtPermissionPromptAction()

HTTP方法 路径模板 注意事项
邮政 /会话/{会话ID}/浏览器文本/权限提示/{提示ID}/行动/{提示操作}

执行由指定的操作提示操作。如果调用此API时没有提示,或者如果请求提示ID不可用,错误“没有这样的浏览器扩展权限提示“返回。如果请求提示操作不可用,错误“没有这样的浏览器扩展权限提示操作“返回。

包装

概述

浏览器扩展可以作为单独的文件或通过容器(如*.zip存档文件)分发并随后加载。无论包装形式如何,这些容器必须包含以下内容:

数字签名

浏览器供应商可能要求扩展包包含数字签名。签名可能指示扩展的源,例如分发存储或扩展的发布者。打包的这一方面因浏览器而异,浏览器实现者可能会强制执行不同的要求。

致谢

非常感谢浏览器扩展社区组以获取他们对本规范的详细反馈。感谢浏览器测试和工具工作组获取他们对WebDriver支持的建议和反馈。

部分章节转载自MDN: