除了Chrome浏览器支持的chrome.* API之外,Chrome浏览器扩展还可以使用Chrome浏览器为Web页面或Chrome app提供的APIs。对于Chrome浏览器2支持的API,还可以绑定第三方API库到Chrome浏览器扩展程序。

Chrome浏览器扩展程序可以使用的API包括:

  • 标准JavaScript API,即Web应用中常用的JavaScript核心API和DOM API
  • XMLHttpRequest API
  • HTML5 API
  • WebKit API,特别是WebKit的CSS特性,如过滤器、动画和变换
  • Chrome V8 API,如JSON
  • 其他第三方类库API,如jQuery,可以绑定这些API到Chrome浏览器扩展程序,就如同在Web页面中使用这些API

本系列将首先介绍一些常用的Chrome浏览器API。

1. Chrome sessions API

Chrome浏览器扩展程序通过chrome.sessions API,可以从浏览器的会话中存取windows窗口和tab页。

chrome.sessions.Session对象的属性如下:

属性名

类型

必选/可选

注释

lastModified

整型

必选

窗口或tab页被关闭或修改的时间,ms

tab

chrome.tabs.Tab

与window两者必选其一

tab页

window

chrome.windows.Window

与tab两者必选其一

窗口

chrome.sessions API中的常用方法:

  • 获得最近被关闭的windows窗口或tab页的列表

chrome.sessions.getRecentlyClosed(Filter filter, function(array of Session))

  • 获得同步会话中的所有设备

chrome.sessions.getDevices(Filter filter, function(array of Session))

  • 恢复打开指定会话中的窗口或tab页

chrome.sessions.restore(string sessionId, function(Session session))

2. Chrome windows API

Chrome浏览器扩展程序通过chrome.windows API,可以与浏览器的窗口系统交互,如创建浏览器窗口、修改浏览器窗口和重新编排浏览器窗口。

chrome.windows API本身无需声明任何授权。但是一个chrome.windows.Window对象包含一个chrome.tabs.Tab类型的数组,如果要操作数组中的tabs的url、title、favIconUrl属性,则需要在manifest.json文件中声明tabs授权如下:

 {
...
"permissions": [
"tabs"
],
...
}

当前窗口是包含正在运行的JavaScript代码的窗口。这与当前拥有焦点的窗口可能不是同一个窗口。

chrome.windows.Window对象的属性如下:

属性名

类型

必选/可选

注释

id

整型

可选

窗口的ID,在浏览器会话范围内唯一。有些情况下的窗口没有ID

focused

布尔型

可选

窗口是否拥有焦点

top

整型

可选

窗口离屏幕顶部边缘偏移的像素值。有些情况下的窗口没有top

left

整型

可选

窗口离屏幕左部边缘偏移的像素值。有些情况下的窗口没有left

width

整型

可选

窗口的宽度像素值,包括边框。有些情况下的窗口没有width

height

整型

可选

窗口的高度像素值,包括边框。有些情况下的窗口没有height

tabs

chrome.tabs.Tab的数组

可选

窗口中拥有的tabs

incognito

布尔型

可选

窗口是否运行在隐身模式下

type

WindowType

可选

浏览器窗口的类型。

枚举值"normal""popup""panel""app""devtools"

state

WindowState

可选

浏览器窗口的状态。枚举值"normal""minimized""maximized""fullscreen""docked"

alwaysOnTop

布尔型

必选

窗口是否总是位于顶层(模式窗口)

sessionId

字符串

可选

从Chrome.sessions API获取的会话ID,用以唯一标识一个窗口

chrome.tabs API中的常用方法:

  • 创建一个新的浏览器窗口

chrome.windows.create(object createData, function(Window window){…})

createData对象是可选的,表示采用默认值创建窗口。createData对象的属性同chrome.windows.Window对象。

  • 关闭一个指定的浏览器窗口

chrome.windows.remove(integer windowId, function(){…})

  • 修改一个指定的浏览器窗口的参数

chrome.windows.update(integer windowId, object updateInfo, function(Window window){…})

updateInfo对象是必选的,其中未涉及的Window属性则保持不变。

  • 获取指定ID的窗口对象

chrome.windows.get(integer windowId, object getInfo, function(Window window){…})

getInfo对象是可选的,其有两个参数。一个是名为populate的布尔型参数,true表示该方法得到的chrome.windows.Window对象里包含chrome.tabs.Tab类型的数组。另一个名为windowTypes的WindowType型参数,表示通过windowTypes进行筛选窗口。

  • 获取所有的窗口对象

chrome.windows.getAll(object getInfo, function(array of Window){…})

getInfo对象是可选的,其有两个参数。一个是名为populate的布尔型参数,true表示该方法得到的chrome.windows.Window对象里包含chrome.tabs.Tab类型的数组。另一个名为windowTypes的WindowType型参数,表示通过windowTypes进行筛选窗口。

3. Chrome tabs API

Chrome浏览器扩展程序通过chrome.tabs API,可以与浏览器的tab系统交互,如创建浏览器tab、修改浏览器tab和重新编排浏览器tabs。

大多数chrome.tabs API无需声明任何授权,但是如果要操作tab的url、title、favIconUrl属性,则需要在manifest.json文件中声明tabs授权如下:

 {
...
"permissions": [
"tabs"
],
...
}

chrome.tabs.Tab对象的属性如下:

属性名

类型

必须/可选

注释

id

整型

可选

tab的ID,在浏览器会话中唯一。有些情况下的tab没有ID

index

整型

可选

从0开始的tab在窗口中的位置序号

windowId

整型

可选

tab所依托的窗口

openerTabId

整型

可选

tab的id,该tab打开当前tab。两个tabs都应该位于同一个窗口中

selected

布尔型

可选

已过期。tab是否被选中

highlighted

布尔型

可选

tab是否高亮显示

active

布尔型

可选

tab是否成为窗口中的激活tab,无论窗口是否拥有焦点

pinned

布尔型

可选

tab是否订住

audible

布尔型

可选

tab是否在刚刚过去的几秒钟里发出过声音(当未必被听见,因为可能被静音)

mutedInfo

MutedInfo类型

可选

tab的静音状态

url

字符串

可选

tab显示的url,需要拥有tabs权限

title

字符串

可选

tab显示的title,需要拥有tabs权限

favIconUrl

字符串

可选

tab的favicon的url,需要拥有tabs权限。tab加载过程中为空

status

字符串

可选

tab的状态,枚举值"loading", "complete"

incognito

布尔型

可选

tab所在窗口是否为隐身窗口

width

整型

可选

tab的宽度像素值

height

整型

可选

tab的高度像素值

sessionId

字符串

可选

从Chrome.sessions API获取的会话ID,用以唯一标识一个tab

chrome.tabs API中的常用方法:

  • 创建一个新tab

chrome.tabs.create(object createProperties, function(Tab tab){…})

createProperties对象的属性如下:

属性名

类型

必须/可选

注释

windowId

整型

可选

创建tab所依托的窗口,默认为当前窗口

index

整型

可选

被创建的tab在窗口中的位置序号,0~tab数量

url

字符串

可选

被创建的tab的初始url。完整的URL类似于http://www.yourdomain.com,相对的URL可以是相对于扩展中的当前页面。

active

布尔型

可选

被创建的tab是否成为激活tab,无论窗口是否拥有焦点。默认为true

selected

布尔型

可选

已过期。被创建的tab是否成为被选中tab,默认true

pinned

布尔型

可选

被创建的tab是否订住,默认false

openerTabId

整型

可选

tab的id,该tab打开新创建的tab。两个tabs都应该位于同一个窗口中

  • 复制一个新tab

chrome.tabs.duplicate(integer tabId, function(Tab tab){…})

  • 关闭tabs

chrome.tabs.remove(integer or array of integer tabIds, function(){…})

  • 修改tab的属性

chrome.tabs.update(integer tabId, object updateProperties, function(Tab tab){…})

updateProperties对象是必选的,其中未涉及的tab属性则保持不变。

  • 获取指定id的tab

chrome.tabs.get(integer tabId, function(Tab tab){…})

  • 根据指定的若干属性查找tabs

chrome.tabs.query(object queryInfo, function(array of Tab){…})

queryInfo对象的属性如下:

属性名

类型

必须/可选

注释

active

布尔型

可选

tab是否成为窗口中的激活tab

pinned

布尔型

可选

tab是否订住

audible

布尔型

可选

tab是否在刚刚过去的几秒钟里发出过声音(当未必被听见,因为可能被静音)

muted

布尔型

可选

tab是否处于静音状态

highlighted

布尔型

可选

tab是否高亮显示

currentWindow

布尔型

可选

tab是否位于当前窗口

lastFocusedWindow

布尔型

可选

tab是否位于最近拥有焦点的窗口中

status

TabStatus类型

可选

tab的状态,枚举值"loading", "complete"

title

字符串

可选

tab显示的title,需要拥有tabs权限

url

字符串

可选

tab显示的url,需要拥有tabs权限

windowId

整型

可选

tab所依托的窗口

windowType

WindowType类型

可选

tab所在窗口的类型

枚举值"normal""popup""panel""app", "devtools"

index

整型

可选

从0开始的tab在窗口中的位置序号

  • 注入JavaScript代码到页面中

chrome.tabs.executeScript(integer tabId, object details, function(array of any){…})

details对象的属性如下:

属性名

类型

必须/可选

注释

code

字符串

与file两者必选其一

要注入的JavaScript代码或CSS代码

file

字符串

与code两者必选其一

要注入的JavaScript代码或CSS文件路径

allFrames

布尔型

可选

true表示CSS将注入到当前页面的所有frames。默认false,表示CSS只注入到顶层frame

matchAboutBlank

布尔型

可选

true表示CSS将注入about:blank和about:srcdoc,当不好注入到about:-frames。默认false

runAt

枚举型

"document_start","document_end", "document_idle"

可选

CSS最早注入的时机

  • 注入CSS文件到页面中

chrome.tabs.insertCSS(integer tabId, object details, function(){…})

details对象的属性同executeScript()。

Chrome浏览器扩展开发系列之十六:扩展中可用的Chrome浏览器API的更多相关文章

  1. Chrome浏览器扩展开发系列之十四

    Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59      阅读:1361      评论:0      收藏:0    ...

  2. Chrome浏览器扩展开发系列之十四:本地消息机制Native messagin

    Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 2016-11-24 09:36 114人阅读 评论(0) 收藏 举报  分类: PPAPI(27)  通过将浏览器 ...

  3. Chrome浏览器扩展开发系列之十八:扩展的软件国际化chrome.i18n API

    i18n是internationalization 的简写,这里将讨论软件国际化的问题.熟悉软件国际化的朋友应该知道,软件国际化要求,页面中所有用户可见的字符串都必须置于资源属性文件中.资源属性文件中 ...

  4. Chrome浏览器扩展开发系列之十五:跨域访问的XMLHttpRequest对象

    XMLHttpRequest对象是W3C的标准API,用于访问服务器资源.XMLHttpRequest对象支持多种文本格式,如XML和JSON等.XMLHttpRequest对象可以通过HTTP和HT ...

  5. Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging

    通过将浏览器所在客户端的本地应用注册为Chrome浏览器扩展的“本地消息主机(native messaging host)”,Chrome浏览器扩展还可以与客户端本地应用之间收发消息. 客户端的本地应 ...

  6. Chrome浏览器扩展开发系列之十二:Content Scripts

    Content Scripts是运行在Web页面的上下文的JavaScript文件.通过标准的DOM,Content Scripts 可以操作(读取并修改)浏览器当前访问的Web页面的内容. Cont ...

  7. Chrome浏览器扩展开发系列之十九:扩展开发示例

    翻译总结了这么多的官网内容,下面以一款博主开发的“沪深股票价格变化实时追踪提醒”软件为例,介绍Chrome浏览器扩展程序的开发,开发环境为Eclipse IDE+Chrome Browser. “沪深 ...

  8. Chrome浏览器扩展开发系列之十:桌面通知Notification

    Desktop Notification也称为Web Notification,是在Web页面之外,以弹出桌面对话框的形式通知用户发生了某事件.Web Notification于2015.9.10成为 ...

  9. Chrome浏览器扩展开发系列之十七:扩展中可用的chrome.events API

    chrome.events中定义了一些常见的事件类型,可以供Chrome浏览器扩展程序发出对应的事件对象. 对于关注的事件,首先要通过addListener()在对应的事件上注册监听器,示例如下: c ...

随机推荐

  1. javaWeb学习总结(5)- HttpServletRequest应用

    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的相关方法,即可以获得客户的这些信息 ...

  2. CSS小技巧-怎样让每行多余的文字显示文省略号?

    1.white-space:nowrap 如果是中文,则需要设置行末不断行 2.overflow:hidden 设置超出控件范围隐藏 3.text-overflow:ellipsis

  3. nodejs中exports与module.exports的区别详细介绍

    如果模块是一个特定的类型就用Module.exports.如果模块是一个典型的"实例化对象"就用exports. exports.name = function() { conso ...

  4. 与我们息息相关的internet服务(1)---域名服务

    在起步一个公司,从组建的技术上,可能要准备很多东西,其中一个就是我们熟悉的域名-----域名可以用在邮箱中.网站中等等 域名,听起来很怪的一个词(他类似于电话本的作用),但理解起来很简单,想法也很简单 ...

  5. 高性能迷你React框架anu在低版本IE的实践

    理想是丰满的,现实是骨感的,react早期的版本虽然号称支持IE8,但是页面总会不自觉切换到奇异模式下,导致报错.因此必须让react连IE6,7都支持,这才是最安全.但React本身并不支持IE6, ...

  6. 做电子商务的七个SEO技巧

    随着电子商务网站的迅速增加,为了适应不断增长的网络客户多样化需求.越来越多的人注意到,从网站上购买既节省了时间和金钱,因此电子商务社区越来越激烈.网站需要具有独特的设计风格和功能,而不是网站内容的不断 ...

  7. CPU-Z五大主要功能及使用方法初步了解

    CPU-Z这款软件除了具有查看CPU温度这个功能之外,还有很多其他的功能.今天就和小编一起去看看CPU-Z的5大功能以及他们的使用方法吧! CPU信息标签页 CPU-Z介绍: CPU-Z是一款著名的免 ...

  8. vue.js实现数据动态响应(Vue.set的应用)

    在vue里面,我们操作最多的就是各种数据,在jquery里面,我们习惯通过下标定向找到数据,然后重新赋值 比如var a[0]=111;(希望上家公司原谅菜鸟的我写了不少这样的代码

  9. 判断客户端使用的是安卓还是苹果,然后加载对应的css文件

    <script type="text/javascript" charset="utf-8"> var browser = { versions: ...

  10. PHP验证码的制作教程

    自己过去自学了PHP绘画验证码的教程,现在就把这一部分笔记跟大家分享,希望可以帮到大家. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云 ...