在Html5中,有一个关于桌面通知(Desktop Notification)的API,允许应用程序发送通知到桌面。这里要讲的是Chrome浏览器中插件(extension)中桌面通知的应用。

google-chrome-extensions

在Chrome v28版本之后,Chrome插件里面桌面通知的API改变了,而在http://open.chrome.360.cn/Chromium文档中依旧未变。

Chrome v28,取消了webkitNotifications.createHTMLNotification()方法,仅剩下createNotification()方法,另外去似乎在background页面中无法获取通过createNotification()方法生成的通知。

上帝给你关上一道门,同时也会给你打开一扇窗。修改之后,Chrome插件引入全新的chrome.notifications

英文原版说明参照 https://developer.chrome.com/extensions/notifications.html

中文汉化参照 http://lmk123.duapp.com/chrome/extensions/notifications.html --中文版不是最新的

目前该 API 只能在 Chrome OS , Mac 和 Windows 上正常工作。

chrome.notifications

类型

通知包含四种类型(TemplateType):“basic”,"image","list","progress"

所有模板类型(simple、basic、image、list)都必须包含通知的 title(标题)和 message(消息),还要包含 iconUrl(图标 URL),指向显示在通知消息左侧的小图标。image 模板类型还包含 imageUrl(图片 URL),指向在通知中预览的图片。由于严格的内容安全策略,这些 URL 都应该指向本地资源或使用数据 URL。

basic模版的一个列子:

var opt = {
  type: "basic",
  title: "主要标题",
  message: "要显示的主要消息",
  iconUrl: "url_to_small_icon"
}

list(列表)模版以列表的形式显示items

var opt = {
  type: "list",
  title: "主要标题",
  message: "要显示的主要消息",
  iconUrl: "url_to_small_icon",
  items: [{ title: "Item1", message: "这是项目一。"},
          { title: "Item2", message: "这是项目二。"},
          { title: "Item3", message: "这是项目三。"}]
}

方法

create

chrome.notifications.create(string notificationId, NotificationOptions options, function callback)

创建并显示一个通知,内容由options指定,由notificationId标识。notificationId可以为空,create会自动生成标识符。如果notificationId匹配已有的通知,create会在创建之前清楚这一通知。callback返回通知标识符,表示创建的通知。

参数

notificationId ( string )

options ( NotificationOptions )

callback ( function )

回调函数

callback参数应该指定一个如下形式的函数:

function(string notificationId) {...};

update

chrome.notifications.update(string notificationId, NotificationOptions options, function callback)

更新具有notificationId标识符和options选项的已有通知,callback指示是否存在匹配的通知。

参数

notificationId(string)

options(NotificationOptions)

callback(function()

回调函数

callback参数应该指定如下形式的函数:

function(boolean wasUpated){...};

clear

chrome.notifications.clear(string notificationId, function callback)

清除指定的由create方法返回的notificationId对应的通知,callback指示是否存在匹配的通知。

参数

notificationId ( string )

callback ( function )

回调函数

callback参数应该指定一个如下形式的函数:

function(boolean wasCleared) {...};

getAll

chrome.notifications.getAll(function callback)

执行 callback 时传递系统当前所有的通知标识符。

参数

callback ( function )

回调函数

callback参数应该指定一个如下形式的函数:

function(object notifications) {...};

事件

onClosed

通知由系统或用户操作关闭。

chrome.notifications.onClosed.addListener(function callback)

参数

callback ( function )

回调函数

callback参数应该指定一个如下形式的函数:

function(string notificationId, boolean byUser) {...};

onClicked

用户单击了通知中的非按钮区域

chrome.notifications.onClicked.addListener(function callback)

参数

callback ( function )

回调函数

callback参数应该指定一个如下形式的函数:

function(string notificationId) {...};

onButtonClicked

用户按下了通知中的一个按钮。

chrome.notifications.onButtonClicked.addListener(function callback)

参数

callback ( function )

回调函数

callback参数应该指定一个如下形式的函数:

function(string notificationId, integer buttonIndex) {...};