这是HTML5时代(ES6)可以跨过页面,页签。直接从系统层面弹出消息通知的API。
Notifications API 允许网页控制向最终用户显示系统通知 —这些都在顶级浏览上下文视口之外,因此即使用户已经切换标签页或移动到不同的应用程序,也可以显示。该 API 被设计成与不同平台上的现有通知系统兼容。
想使用此API需要用户授权。所以需要先申请授权:
Notification.requestPermission().then(function(permission) { ... });
返回值 一个 Promise ,将解析为一个 DOMString ,它是用户对权限请求的选择。这个字符串可以是:
如果得到granted
值,就可以向用户发送消息通知了。
一个简单的通知:
const title = '通知标题'
const options = {
body: '这是通知的正文哦', // 通知的正文
}
let myNotification = new Notification(title, options);
Chrome效果如下:
options还包含了更多的可选项:
Notification.prototype.close()
下面是一个具有完整流程基础例子:
let myNotification
function notification() {
const title = '通知标题'
const options = {
body: '这是通知的正文哦', // 通知的正文
}
myNotification = new Notification(title, options)
}
function notificationClose() {
myNotification.close();
}
if(window.Notification && Notification.permission !== "denied") {
Notification.requestPermission(function(status) { // 请求权限
if(status === 'granted') {
notification()
setTimeout(() => {
notificationClose()
}, 2000)
}
});
}
点击触发事件。默认行为是将焦点移到与该通知相关联的 browsing context 的窗口.当然也可以拦截并做它用:
notification.onclick = function(event) {
event.preventDefault(); // 阻止默认行为
window.open('http://www.lenton.cn/', '_blank');
}
关闭触发事件。
当发生错误时,会发生这些事件。例如:通知被阻止显示
通知显示时触发事件。
参考资料: https://developer.mozilla.org/zh-CN/docs/Web/API/Notification