notification - Web API 接口参考 编辑

Note: 此特性在 Web Worker 中可用。

Secure context
This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Notifications API 的通知接口用于向用户配置和显示桌面通知。

构造方法

let notification = new Notification(title, options)

参数

title
一定会被显示的通知标题
options 可选
一个被允许用来设置通知的对象。它包含以下属性:
  • dir : 文字的方向;它的值可以是 auto(自动), ltr(从左到右), or rtl(从右到左)
  • lang: 指定通知中所使用的语言。这个字符串必须在 BCP 47 language tag 文档中是有效的。
  • body: 通知中额外显示的字符串
  • tag: 赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。
  • icon: 一个图片的URL,将被用于显示通知的图标。

属性

静态属性

这些属性仅在 Notification 对象上有效。

Notification.permission 只读
一个用于表明当前通知显示授权状态的字符串。可能的值包括:denied (用户拒绝了通知的显示), granted (用户允许了通知的显示), 或 default (因为不知道用户的选择,所以浏览器的行为与 denied 时相同).

实例属性

这些属性仅在 Notification 的实例中有效。

Notification.title 只读 (moz only)
在构造方法中指定的 title 参数。
Notification.dir 只读
通知的文本显示方向。在构造方法的 options 中指定。
Notification.lang 只读
通知的语言。在构造方法的 options 中指定。
Notification.body 只读
通知的文本内容。在构造方法的 options 中指定。
Notification.tag 只读
通知的 ID。在构造方法的 options 中指定。
Notification.icon 只读
通知的图标图片的 URL 地址。在构造方法的 options 中指定。

事件处理

Notification.onclick
处理 click 事件的处理。每当用户点击通知时被触发。
Notification.onshow
处理 show 事件的处理。当通知显示的时候被触发。
Notification.onerror
处理 error 事件的处理。每当通知遇到错误时被触发。
Notification.onclose
处理 close 事件的处理。当用户关闭通知时被触发。

方法

静态方法

这些方法仅在 Notification 对象中有效。

Notification.requestPermission()
用于当前页面向用户申请显示通知的权限。这个方法只能被用户行为调用(比如:onclick 事件),并且不能被其他的方式调用。

实例方法

这些方法仅在 Notification 实例或其 prototype 中有效。

Notification.close()
用于关闭通知。

Notification 对象继承自 EventTarget 接口。

EventTarget.addEventListener()
Registers an event handler of a specific event type on the EventTarget.
EventTarget.removeEventListener()
Removes an event listener from the EventTarget.
EventTarget.dispatchEvent()
Dispatches an event to this EventTarget.

Additional methods in Mozilla chrome codebase

Mozilla includes a couple of extensions for use by JS-implemented event targets to implement onevent properties.

See also WebIDL bindings.

  • void setEventHandler(DOMString type, EventHandler handler)
  • EventHandler getEventHandler(DOMString type)

Example

假定有如下 HTML:

<button onclick="notifyMe()">Notify me!</button>

接下来发送一条通知:

function notifyMe() {
  // 先检查浏览器是否支持
  if (!("Notification" in window)) {
    alert("This browser does not support desktop notification");
  }

  // 检查用户是否同意接受通知
  else if (Notification.permission === "granted") {
    // If it's okay let's create a notification
    var notification = new Notification("Hi there!");
  }

  // 否则我们需要向用户获取权限
  else if (Notification.permission !== "denied") {
    Notification.requestPermission().then(function (permission) {
      // 如果用户接受权限,我们就可以发起一条消息
      if (permission === "granted") {
         var notification = new Notification("Hi there!");
      }
    });
  }


  // 最后,如果执行到这里,说明用户已经拒绝对相关通知进行授权
  // 出于尊重,我们不应该再打扰他们了
}

See the live result

规范

规范状态备注
Notifications APILiving StandardInitial specification.

权限

当你要在开放 web 应用中使用通知时,请确保将 desktop-notification 权限添加到你的 manifest 文件中。通知可以被用于任何权限级别,hosted 或更高。

"permissions": {
    "desktop-notification":{}
}

浏览器兼容性

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support5 webkit (see notes)
22
4.0 moz (see notes)
22
未实现256 (see notes)
FeatureAndroidFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari Mobile
Basic support?4.0 moz (see notes)
22
1.0.1 moz (see notes)
1.2
未实现?未实现

Gecko 备忘

  • 在 Firefox 22 (Firefox OS <1.2) 之前,创建一个新的通知必须使用 navigator.mozNotification 对象的 createNotification 方法。
  • 在 Firefox 22 (Firefox OS <1.2) 之前,当调用 show 方法时通知才会被显示出来,并且只支持 clickclose 事件。
  • Nick Desaulniers 编写了一个 Notification shim 以向前和向后兼容各种版本的实现。
  • 在 Firefox OS 有个特别的问题, 你可以传递一个图标路径 用于通知,但是如果应用被打包了你就不能使用相对路径,比如: /my_icon.png。同样的,你也不能这样用: window.location.origin + "/my_icon.png"因为 window.location.origin 的值在打包的应用里为 null。 清单来源字段 可以修复这个问题,但是这个方法只在 Firefox OS 1.1+ 版本中有效。不过有个潜在的解决方案可以用于 Firefox OS <1.1 版本,就是 传递图标的位于外部服务器的绝对 URL 。这个方案并不理想,如通知要立即显示而没有图标,那么将会请求服务器,但是可以用于所有版本的 Firefox OS。

Chrome 备忘

Safari 备忘

  • Safari 在 Safari 6 版本开始支持通知,但是只能在 Mac OSX 10.8+ (Mountain Lion) 中使用。

请参见

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:137 次

字数:14989

最后编辑:8年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文