chrome 浏览器为插件开发提供了很多api支持,对应不同的应用场景,类似chrome.runtime和chrome.alarms
下文中,除非特殊声明,所有的chrome.*对应的api都是异步的,他们会直接返回一个promise,如果你希望监听api换回的结果,可以传递一个回调函数来获取
| API Name | 说明 |
|---|---|
| accessibilityFeatures | 使用chrome.accessibilityFeature来管理浏览器的功能范围,为了能够获取这些功范围,需要为浏览器插件声明accessibilityFeatures.read权限,如果还需要修改这些能力状态,还需要额外声明accessibilityFeatures.modify权限,需要注意的是这两个权限是独立的,不存在覆盖或者大于的能力 |
| action | 使用chrome.action api可以用来控制浏览器插件在浏览器工具栏上icon的表现 |
| alarms | chrome.alarms用来规划将来某个时机或者循环执行的代码逻辑 |
| audio | chrome.audio实现对于系统安装的音频播放设备的信息,并控制播放设备。这个api现在只有在chromeOS上的kiosk模式可以使用 |
| bookmarks | chrome.bookmarks用来控制浏览器的收藏夹 |
| browserAction | 使用browserAction用来在浏览器输入框右侧添加icon,可以为icon添加起泡提示,悬浮提示框和弹出窗 |
| browsingData | chrome.browsingData用来移除用户的浏览数据,包含cookie,下载文件之类 |
| certificateProvider | chrome.certificateProvider可以用来到处一份证书文件,可以用来做TLS身份验证 |
| commands | chrome.commands用来为浏览器插件添加快捷键 |
| contentSettings | chrome.contentSettings用来修改控制浏览器打开的网页能够使用的一些能力或数据,通常用来控制对于浏览器对于特定网页的特定表现 |
| contextMenus | chrome.contextMenus用来添加浏览器的右键菜单中添加选项,你可以选择为特定右键选中的元素添加,例如选中的图片或者超链接 |
| cookies | 使用chrome.cookies来查询或者修改浏览器存储的cookie,同时也可以监听cookie的修改 |
| debugger | chrome.debugger创建一个chrome调试服务,通过该api可以用来连接到一个或多个浏览器tab的调试窗口中的netword、debug Javascript、调试DOM和CSS等,可以通过tabId参数来连接到特定浏览器窗口 |
| declarativeContent | 使用chrome.declarativeContent可以用来根据当前浏览器窗口打开的页面内容(包括静态资源、链接、DOM...)来触发特定的插件动作,并且不需要额外授权 |
| declarativeNetRequest | chrome.declarativeNetRequest用来拦截或者修改符合设定规则的网络请求,它允许插件不用阻塞或者获取请求内容就能够实现修改网络请求的能力,从而实现更高的安全性 |
| desktopCapture | chrome.desktopCapture用来截屏,可以window和其他tab使用 |
| devtools.inspectedWindow | chrome.devtools.inspectedWindow用来和当前打开调试工具的页面进行交互:获取当前窗口的tabId、在当前窗口执行特定的代码、重新加载当前页面或者获取当前页面请求的资源文件 |
| devTools.network | chrome.devtools.network用来获取当前页面在开发者调试工具中展示的network信息 |
| devtools.panels | chrome.devtools.panels用来在开发者调试页面中插入浏览器定义的调试面板 |
| devtools.recorder | chrome.devtools.recorder用来自定义调试工具中的recorder面板 |
| documentScan | 使用chrome.doucmentScan可以获取通过系统安装的内容扫描机器扫描生成的图片内容,该api只能在chromeOs 使用 |
| dom | 使用chrome.dom可以用来调用一个DOM相关的apiopenOrClosedShadowRoot: chrome.dom.openOrClosedShadowRoot |
| downloads | chrome.downloads用来监听、操控、搜索当前浏览器的下载内容 |
| enterprise.deviceAttributes | chrome.enterprise.deviceAttributes用来获取当前设备信息,这个api只有在插件是被组织强制安装的时候可以使用 |
| enterprise.hardwarePlatform | chrome.enterprise.hardwarePlatform用来获取当前浏览器运行的设备的生产商和型号,这个api只有在插件是被组织强制安装的时候可以使用 |
| enterprise.networkingAttributes | chrome.enterprise.networkingAttributes用来获取当前使用的网络的相关信息,这个api只有在插件是被组织强制安装的时候可以使用 |
| enterprise.platformKeys | chrome.enterprise.platformKeys用来生产证书使用的key,并生成安装证书,这些证书可以用来TLS认证和网络验证 |
| events | chrome.events下包含了所有的公共的事件名称,这些事件可以被api触发,可以通过events的事件名称的来判断什么事件被触发了 |
| extension | chrome.extesion实现了一个公共的事件通道,可以用来在插件不同页面、插件的contentScript、不同的浏览器插件之间传递信息 |
| extensionTypes | chrome.extensionTypes包含了浏览器插件中的一些类型定义 |
| fileBrowserHandler | chrome.fileBrowserHanlder用来拓展浏览器自定的文件上传动作,例如拓展上传动作来实现上传文件至你指定的服务器 |
| fileSystemProvider | chrome.fileSystemProvider用来创建一个文件系统,可以被浏览器的文件管理获取 |
| fontSetting | chrome.fontSetting用来管理浏览器的字体设置 |
| gcm | chrome.gcm允许app和浏览器插件通过FCM传递信息 |
| history | chrome.history用来和浏览器的浏览历史进行交互,可以用来添加或者移除或者搜索浏览器历史浏览记录,可以用来自定义浏览器的历史记录页面 |
| i18n | chrome.i18n用来配置插件的国际化设置 |
| identity | 使用chrome.identity来获取OAuth2 access tokens |
| idle | chrome.idle用来监听idle的状态修改 |
| input.ime | 使用chrome.input.ime可以设置自定义的IME为浏览器 |
| instanceID | chrome.instanceID用来获取浏览器连接的对应的服务 |
| loginState | chrome.loginState用来获取当前浏览器的登陆状态或者用来监听用户登录 |
| management | chrome.management用来管理当前浏览器中安装或者正在运行中的插件,可以用来多个浏览器插件定义的new Tab page时的表现 |
| notifications | chrome.notifications可以用来发送桌面通知给用户,其中可以通过消息格式来生成消息内容 |
| omnibox | chrome.omnibox用来定义一个输入框使用的关键字,当用户在输入框输入符合关键字规则的内容时和浏览器插件进行交互 |
| pageAction | chrome.pageAction用来在当前浏览器工具栏的输入框右侧添加icon,用来给特定的页面添加该icon,如果当前页面不可见时,该icon会置灰 |
| pageCapture | chrome.pageCapture用来将当前窗口内容保存为MHTML |
| permissions | chrome.permissions用来在插件运行时声明浏览器权限,所以我们在manifest.json中之需要声明必要的权限(在安装时授权),其他权限可以在运行时声明 |
| platformKeys | chrome.platformKeys用来运行插件使用系统安装的证书 |
| power | chrome.power用来设置系统的电量管理设置 |
| printerProvider | chrome.printerProvider用来暴露一些事件用来给系统的打印机管理系统,可以用来获取打印机系统的打印快照或者提交打印任务 |
| printing | 通过chrome.printing可以发送打印任务给chromebook |
| printingMetrics | 使用chrome.printingMetrics可以获取打印参数 |
| privacy | chrome.privacy可以控制浏览器关于用户隐私的相关设置 |
| proxy | 通过chrome.proxy可以用来管理浏览器代理设置 |
| runtime | 通过chrome.runtime用户可以获取background page上下文、获取manifest.json具体内容、监听或者响应浏览器或者插件的具体生命周期、也可以用来将相对链接转换成绝对链接 |
| scripting | 通过chrome.scripting可以在不同上下文中执行特定的script代码 |
| search | chrome.search用来实现在给定的范围内进行查找,类似ctrl+f |
| sessions | chrome.sessions用来查找或者重新恢复浏览器本次会话中打开的tab或者window |
| storage | chrome.storage用来获取、存储、监听浏览器的本地缓存信息 |
| system.cpu | chrome.system.cpu用来获取系统使用的CPU基础信息 |
| system.display | chrome.system.display用来获取系统使用的渲染内容的基础信息 |
| system.memory | chrome.system.memory用来获取系统使用的内存信息 |
| system.storage | chrome.system.storage用来获取系统当前的存储设备,并且在存储设备(可移动存储设备)被移除时收到监听消息 |
| tabCapture | chrome.tabCapture可以和浏览器tab的媒体设备(设备尺寸、音频...)变化进行交互 |
| tabGroups | chrome.tabGroups用来控制浏览器tab管理器进行交互,可以用来重新排列或者分组/展开tab group |
| tabs | chrome.tabs用来控制浏览器tab管理器进行交互,可以用来重新排列或者新开、修改tab |
| topSites | chrome.topSites用访问浏览器当前展示的窗口,用来获取最常访问的链接接 |
| tts | chrome.tts用来将文字转化成语音播放,和chrome.ttsEngine指定的语音引擎结合使用 |
| ttEngine | chrome.ttEngine用来使用语音播放引擎,如果插件声明使用了该api,则插件可以接受其他插件或者浏览器播放语音的事件和参数,也可以用来播放语音 |
| types | chrome.types包含了浏览器预设的一些类型常量 |
| vpnProvider | chrome.vpnProvider用来设置浏览器的VPN设置,可以用来设置使用的VPN |
| wallpaper | chrome.wallpaper可以设置浏览器的壁纸 |
| webNavigation | chrome.webNavigation可以监听导航栏的地址请求状态 |
| webRequest | chrome.webRequest可以用来监听和分析浏览器发起的网络请求,可以用来监听、修改、阻塞网络请求 |
| windows | chrome.windows用来管理浏览器打开的窗口, window>tab>site |
系统层级api提供了操作浏览器之外设备的能力,比如蓝牙、粘贴板、usb、系统网络、系统其他端口
需要注意的是在chrome浏览器的未来规划当中,这些api将会被移除,所以这些api当前属于deprecated状态,但是目前(2022)可以用