除了Chrome浏览器支持的chrome.* API以外,Chrome浏览器扩展还可使用Chrome浏览器为Web页面或Chrome app提供的APIs。对于Chrome浏览器2支持的API,还能够绑定第三方API库到Chrome浏览器扩展程序。chrome
Chrome浏览器扩展程序可使用的API包括:json
本系列将首先介绍一些经常使用的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中的经常使用方法:
chrome.sessions.getRecentlyClosed(Filter filter, function(array of Session))
chrome.sessions.getDevices(Filter filter, function(array of Session))
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 |
可选 |
浏览器窗口的类型。 枚举值 |
state |
WindowState |
可选 |
浏览器窗口的状态。枚举值 |
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属性则保持不变。
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中的经常使用方法:
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都应该位于同一个窗口中 |
chrome.tabs.duplicate(integer tabId, function(Tab tab){…})
chrome.tabs.remove(integer or array of integer tabIds, function(){…})
chrome.tabs.update(integer tabId, object updateProperties, function(Tab tab){…})
updateProperties对象是必选的,其中未涉及的tab属性则保持不变。
chrome.tabs.get(integer tabId, function(Tab tab){…})
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的状态,枚举值 |
title |
字符串 |
可选 |
tab显示的title,须要拥有tabs权限 |
url |
字符串 |
可选 |
tab显示的url,须要拥有tabs权限 |
windowId |
整型 |
可选 |
tab所依托的窗口 |
windowType |
WindowType类型 |
可选 |
tab所在窗口的类型 枚举值 |
index |
整型 |
可选 |
从0开始的tab在窗口中的位置序号 |
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 |
枚举型
|
可选 |
CSS最先注入的时机 |
chrome.tabs.insertCSS(integer tabId, object details, function(){…})
details对象的属性同executeScript()。