丰富的通知

警告:网络通知 API 中的 webKitNotifications.createHTMLNotification() 已弃用,新的 网络通知 API 只允许文本通知。Chrome 浏览器的通知 API 很快就会在稳定版中支持,网络通知将更新为新的丰富通知格式。

使用丰富的通知告诉用户发生了一些重要的事。通知出现在浏览器窗口的外面,如下面的截图所示,通知的显示方式与位置的具体细节取决于具体平台。

丰富的通知 - 图1

丰富的通知 - 图2

丰富的通知 - 图3

您只要用一点点 JavaScript 代码以及可选的一个与您的扩展程序一起打包的 HTML 页面就能创建通知窗口。

例子

首先在您的清单文件中声明 notifications 权限:

manifest.json

  1. {
  2. "name": "我的扩展程序",
  3. "manifest_version": 2,
  4. ...
  5. "permissions": [
  6. "notifications"
  7. ],
  8. ...
  9. // 注意:由于 bug 134315,您必须将您希望与 createNotification()
  10. // 一起使用的所有图片声明为可以在网页中访问的资源。
  11. "web_accessible_resources": [
  12. "48.png"
  13. ],
  14. }

然后,使用 webkitNotifications 对象创建通知:

  1. // 注意:没有必要调用 webkitNotifications.checkPermission()。
  2. // 声明了 notifications 权限的扩展程序总是允许创建通知。
  3. // 创建一个简单的文本通知:
  4. var notification = webkitNotifications.createNotification(
  5. '48.png', // 图标 URL,可以是相对路径
  6. '您好!', // 通知标题
  7. '内容(Lorem ipsum...)' // 通知正文文本
  8. );
  9. // 或者创建 HTML 通知:
  10. var notification = webkitNotifications.createHTMLNotification(
  11. 'notification.html' // HTML 的 URL,可以是相对路径
  12. );
  13. // 然后显示通知。
  14. notification.show();

API 参考

参见桌面通知规范草案(英文)。

与其他视图通信

您可以使用 extension.getBackgroundPage 和 extension.getViews 在您的扩展程序中实现通知与其他视图间的通信。例如:

notification.js

  1. chrome.extension.getBackgroundPage().doThing();

background.js

  1. chrome.extension.getViews({type:"notification"}).forEach(function(win) {
  2. win.doOtherThing();
  3. });

更多例子

您可以在 examples/api/notifications 目录中找到一个使用通知的简单例子。有关其他例子以及查看源代码的帮助,请参见示例

另外,您也可以参见 html5rocks.com(英文)上的通知教程。请忽略与权限有关的代码,如果您声明了 “notifications” 权限它们就没有必要了。