MDN說明: 容許網頁控制向最終用戶顯示系統通知—這些都在頂級瀏覽上下文視口以外,所以即便用戶已經切換標籤頁或移動到不一樣的應用程序,也能夠顯示。該API被設計成與不一樣平臺上的現有通知系統兼容。web
通俗易懂的說明: Notification API 是HTML5新增的桌面通知功能,開發者能夠在瀏覽器不關閉而且用戶贊成通知的前提下向桌面發送通知api
win10效果(本人win10系統):瀏覽器
let notification = new Notification(title, options)
複製代碼
必定會被顯示的通知標題bash
一個被容許用來設置通知的對象。它包含如下屬性微信
pc端兼容性還好(除了ie),移動端幾乎都不支持,因此Notification api 通常不會使用在手機端app
export default class AppNotificationHandler {
isNotificationSupported: boolean;
isPermissionGranted: boolean;
constructor() {
//瀏覽器是否支持Notification api
this.isNotificationSupported = 'Notification' in window;
//用戶是否贊成接受通知
this.isPermissionGranted = Notification.permission === 'granted';
}
//請求開啓系統通知功能
async requestPermission(): Promise<void> {
const {isNotificationSupported} = this;
if (!isNotificationSupported) {
throw ('當前瀏覽器不支持 Notification API');
}
const permission = await Notification.requestPermission();
if (permission === 'granted') {
this.isPermissionGranted = true;
};
}
//打開系統通知功能(具體事件綁定由用戶自定義)
openNotification(title: string, options: NotificationOptions): Notification {
const {isNotificationSupported, isPermissionGranted} = this;
if (!isNotificationSupported) {
throw ('當前瀏覽器不支持Notification API');
}
if (!isPermissionGranted) {
throw ('當前頁面通知未開啓');
}
return new Notification(title, options)
}
}
複製代碼
1.生成AppNotificationHandler實例async
const appNotificationHandler = new AppNotificationHandler();
複製代碼
2.請求用戶開啓系統通知功能函數
appNotificationHandler.requestPermission();
複製代碼
3.發送通知測試
const notice = appNotificationHandler.openNotification('測試通知', {
body: '來通知了,快去查看吧',
tag: 'linxin',
icon: 'https://www.wangjie818.wang/upload/微信圖片_20190619140215.jpg',
})
複製代碼
4.彈窗包含事件ui
//消息框顯示時被調用
notice.onshow = function() {
console.log('notification is shows up');
};
//消息框被點擊時被調用
notice.onclick = function() {
console.log('notification is click');
};
//當有錯誤發生時會onerror函數會被調用
//若是沒有granted受權,建立Notification對象實例時,也會執行onerror函數
notice.onerror = function() {
console.log('notification is an error');
};
//一個消息框關閉時onclose函數會被調用
notice.onclose = function() {
console.log('notification is closed');
};
複製代碼
Notification api發送桌面通知仍是挺方便的,公司內部管理系統是能夠適當搭配使用的。若是是對外用戶流量大的仍是不推薦使用,畢竟webscoket是能夠實現網頁內實時通知的,而且能夠本身隨意定製化。