## Notification
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.permission `
只读,一个用于表明当前通知显示授权状态的字符串。可能的值包括:denied (用户拒绝了通知的显示), granted (用户允许了通知的显示), 或 default (因为不知道用户的选择,所以浏览器的行为与 denied 时相同).
**实例属性**
| 属性 | 描述 |
| :--: | :--: |
| Notification.title | 在构造方法中指定的 title 参数 |
| Notification.dir | 通知的文本显示方向 |
| Notification.lang | 通知的语言 |
| Notification.body | 通知的文本内容 |
| Notification.tag | 通知的 ID |
| Notification.icon | 通知的图标图片的 URL 地址 |
**事件**
| 事件 | 描述 |
| :--: | :--: |
| Notification.onclick | 处理 click 事件的处理 |
| Notification.onshow | 处理 show 事件的处理 |
| Notification.onerror | 处理 error 事件的处理 |
| Notification.onclose | 处理 close 事件的处理 |
### 方法
**静态方法**
`Notification.requestPermission()`
用于当前页面想用户申请显示通知的权限。这个方法只能被用户行为调用(比如:onclick 事件),并且不能被其他的方式调用。
**实例方法**
| 方法 | 描述 |
| :--: | :--: |
| Notification.close() | 用于关闭通知 |
**简单实例**
```
// 申请权限
function requestNotification(title, options) {
// 先检查浏览器是否支持
if (!('Notification' in window)) {
alert('This browser does not support desktop notification');
}
// 检查用户是否同意接受通知
else if (Notification['permission'] === 'granted') {
this.openNotification(title, options);
}
// 否则我们需要向用户获取权限
else if (Notification['permission'] !== 'denied') {
Notification.requestPermission((permission) => {
if (permission === 'granted') {
// 如果用户同意,就可以向他们发送通知
openNotification(title, options);
}
});
}
}
function openNotification(title, options) {
const notification = new Notification(title, options);
notification.onclose = (event) => {
// 当关闭时
}
}
requestNotification('您有一条消息通知', {
body: '来自XX',
requireInteraction: true,
data: {},
icon: 'notification-icon.jpg'
});
```
- 前言
- JavaScript简介
- 基本概念
- 语法
- 数据类型
- 运算符
- 表达式
- 语句
- 对象
- 数组
- 函数
- 引用类型(对象)
- Object对象
- Array对象
- Date对象
- RegExp对象
- 基本包装类型(Boolean、Number、String)
- 单体内置对象(Global、Math)
- console对象
- DOM
- DOM-属性和CSS
- BOM
- Event 事件
- 正则表达式
- JSON
- AJAX
- 表单和富文本编辑器
- 表单
- 富文本编辑器
- canvas
- 离线应用
- 客户端存储(Cookie、Storage、IndexedDB)
- HTML5 API
- Video/Audio
- Geolocation API
- requestAnimationFrame
- File API
- FullScreen API
- IndexedDB
- 检测设备方向
- Blob
- vibrate
- Luminosity API
- WebRTC
- Page Visibility API
- Performance API
- Web Speech
- Notification
- 面向对象的程序设计
- 概述
- this关键字
- 原型链
- 作用域
- 常用API合集
- SVG
- 错误处理机制
- JavaScript开发技巧合集
- 编程风格
- 垃圾回收机制