Chrome浏览器扩展开发系列之十六:扩展中可用的Chrome浏览器API

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

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

  • 标准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。windows

1. Chrome sessions API数组

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

chrome.sessions.Session对象的属性以下:session

属性名app

类型dom

必选/可选动画

注释url

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受权以下:

1 {
2         ...
3         "permissions": [
4           "tabs"
5         ],
6         ...
7 }

 

当前窗口是包含正在运行的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受权以下:

1 {
2         ...
3         "permissions": [
4           "tabs"
5         ],
6         ...
7 }

 

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()。

相关文章
相关标签/搜索