浏览器消息提示Notification

  目录

浏览器自带的消息提示框

浏览器消息提示Notification

这两天有一个新需求,微信网页版有这个功能,就是当浏览器最小化后,微信来消息,这时在电脑桌面的右下角会有消息提示框。
这个功能用到了浏览器新特性的Notification接口,虽说兼容性不好,但是在现代浏览器上使用还是可以的。
直接贴出demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Notification</title>
</head>
<body>
<button id="message">弹消息</button>
<button id="message-delay">弹消息延迟</button>
</body>
<script>
var btn = document.getElementById('message');
var btnDelay = document.getElementById('message-delay');
btn.addEventListener('click', ()=> {
notifyMe({
title: '消息通知',
body: '菜品订单',
icon: './asset/image/icon.png'
});
}, false);

btnDelay.addEventListener('click', ()=> {
setTimeout(()=> {
notifyMe({
title: '消息通知',
body: '菜品订单',
icon: './asset/image/icon.png'
});
}, 5000);
}, false);

function notifyMe(options) {
// if(!document.hidden) return; // 判断浏览器是否最小化
// 先检查浏览器是否支持
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(options.title, {
body: options.body,
icon: options.icon,

});
}

// 否则我们需要向用户获取权限
else if (Notification.permission !== 'denied') {
Notification.requestPermission(function (permission) {
// 如果用户同意,就可以向他们发送通知
if (permission === "granted") {
var notification = new Notification(options.title, {
body: options.body,
icon: options.icon,
});
}
});
}
// 过3秒关闭提示框
setTimeout(function() {
notification.close();
}, 3000);
}
</script>
</html>