--- title: Notifications API slug: Web/API/Notifications_API tags: - Notifications API translation_of: Web/API/Notifications_API ---
{{DefaultAPISidebar("Web Notifications")}}
Notifications API 允许网页控制向最终用户显示系统通知 —这些都在顶级浏览上下文视口之外,因此即使用户已经切换标签页或移动到不同的应用程序,也可以显示。该API被设计成与不同平台上的现有通知系统兼容。
在支持该接口的平台上,显示一个系统通知通常涉及两件事。首先,用户需要授予当前源的权限以显示系统通知,这通常在应用或站点初始化时, 使用{{domxref("Notification.requestPermission()")}} 方法来完成。
这将产生一个请求对话框,沿着以下几行:
从这里,用户可以选择允许来自此来源的通知,阻止来自此来源的通知,或不选择此点。一旦做出选择,该设置通常将持续用于当前会话。
注:从Firefox 44开始, 通知(Notifications) 和推送(Push)的权限已合并。如果为通知授予权限,推送也将启用。
接下来,使用 {{domxref("Notification.Notification","Notification()")}} 构造函数创建一个新通知。这个方法可以传入两个参数。这必须传递一个标题参数,并可以选择性地传递一个选项对象来指定选项,如文本方向,正文,显示图标,通知声音播放, 等等。
{{AvailableInWorkers}}
此外, Notifications API 规范对 ServiceWorker API指定了多个添加,以允许 service workers发送通知。
注:想了解怎么在你的应用里使用通知接口,请阅读 Using the Notifications API。
Specification | Status | Comment |
---|---|---|
{{SpecName('Web Notifications')}} | {{Spec2('Web Notifications')}} | Living standard |
{{CompatibilityTable}}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 5{{property_prefix("webkit")}}[1] 22 |
{{CompatGeckoDesktop("2.0")}}{{property_prefix("moz")}}[2] {{CompatGeckoDesktop("22.0")}} |
{{CompatNo}} | 25 | 6[3] |
Available in workers | {{CompatUnknown}} | {{CompatGeckoDesktop("41.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Service worker additions |
{{CompatChrome(42.0)}} |
{{CompatGeckoDesktop("42.0")}}[4] | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | {{CompatUnknown}} |
{{CompatVersionUnknown}} |
{{CompatGeckoMobile(2.0)}}{{property_prefix("moz")}}[2] {{CompatGeckoMobile(22.0)}} |
1.0.1{{property_prefix("moz")}}[2] 1.2 |
{{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} |
{{CompatVersionUnknown}} |
Available in workers | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile(41.0)}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Service worker additions | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(42.0)}}[4] | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatChrome(42.0)}} |
[1] 在 Chrome 22 之前, 通知接口遵守一个旧版本的提案(an old prefixed version of the specification )使用一个包含前缀符的{{domxref("window.navigator.webkitNotifications","navigator.webkitNotifications")}} 对象来实例化一个通知对象。 在 Chrome 32之前, {{domxref("Notification.permission")}}属性不支持。
[2] 在 Firefox 22 (Firefox OS <1.2)之前,通知对象的实例化需要使用{{domxref("window.navigator.mozNotification", "navigator.mozNotification")}} 对象的 createNotification()
方法。另外,通知对象需要使用 show()
方法来显示,并且仅支持 click
和 close
事件 (Nick Desaulniers 写了一个通知的兼容解决方法( a Notification shim )来覆盖旧浏览器和现代浏览器。)
[3] Safari 从Safari 6开始支持通知,但只在 Mac OSX 10.8+ (Mountain Lion)上。
[4] Firefox 42 has shipped with web notifications from Service Workers disabled.
当你在 Firefox OS app中使用通知时,请确保在manifest文件中添加了desktop-notification
权限 。 Notifications can be used at any permission level, hosted or above:
"permissions": { "desktop-notification": {} }