--- title: notification slug: Web/API/notification tags: - API - 参考 - 通知 translation_of: Web/API/Notification ---
Notifications API 的通知接口用于向用户配置和显示桌面通知。
let notification = new Notification(title, options)
title
options
{{optional_inline}}dir
: 文字的方向;它的值可以是 auto(自动)
, ltr(从左到右)
, or rtl
(从右到左)lang
: 指定通知中所使用的语言。这个字符串必须在 BCP 47 language tag 文档中是有效的。body
: 通知中额外显示的字符串tag
: 赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。icon
: 一个图片的URL,将被用于显示通知的图标。这些属性仅在 Notification
对象上有效。
denied
(用户拒绝了通知的显示), granted
(用户允许了通知的显示), 或 default
(因为不知道用户的选择,所以浏览器的行为与 denied 时相同).这些属性仅在 Notification
的实例中有效。
这些方法仅在 Notification
对象中有效。
这些方法仅在 Notification
实例或其 prototype
中有效。
Notification
对象继承自 {{domxref("EventTarget")}} 接口。
{{page("/en-US/docs/Web/API/EventTarget","Methods")}}
假定有如下 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!"); } }); } // 最后,如果执行到这里,说明用户已经拒绝对相关通知进行授权 // 出于尊重,我们不应该再打扰他们了 }
{{ EmbedLiveSample('Example', '100%', 30) }}
规范 | 状态 | 备注 |
---|---|---|
{{SpecName('Web Notifications')}} | {{Spec2('Web Notifications')}} | Initial specification. |
当你要在开放 web 应用中使用通知时,请确保将 desktop-notification
权限添加到你的 manifest 文件中。通知可以被用于任何权限级别,hosted 或更高。
"permissions": {
"desktop-notification":{}
}
{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 5 {{ property_prefix("webkit") }} (see notes) 22 |
4.0 {{ property_prefix("moz") }} (see notes) 22 |
{{ CompatNo() }} | 25 | 6 (see notes) |
Feature | Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{ CompatUnknown() }} | 4.0 {{ property_prefix("moz") }} (see notes) 22 |
1.0.1 {{ property_prefix("moz") }} (see notes) 1.2 |
{{ CompatNo() }} | {{ CompatUnknown() }} | {{ CompatNo() }} |
createNotification
方法。show
方法时通知才会被显示出来,并且只支持 click
和 close
事件。/my_icon.png
。同样的,你也不能这样用: window.location.origin + "/my_icon.png"
,因为 window.location.origin
的值在打包的应用里为 null。 清单来源字段 可以修复这个问题,但是这个方法只在 Firefox OS 1.1+ 版本中有效。不过有个潜在的解决方案可以用于 Firefox OS <1.1 版本,就是 传递图标的位于外部服务器的绝对 URL 。这个方案并不理想,如通知要立即显示而没有图标,那么将会请求服务器,但是可以用于所有版本的 Firefox OS。