// 判断浏览器是否支持Notification
if (window.Notification) {
switch (Notification.permission) {
case 'default':
alert('用户暂未开启该网站消息通知');
defaultPermission();
break;
case 'granted':
alert('用户已开启该网站消息通知');
showNotification();
break;
case 'denied':
alert('用户拒绝该网站消息通知');
break;
}
} else {
alert('暂不支持消息通知');
}
function defaultPermission() {
Notification.requestPermission().then(permission => {
switch (permission) {
case 'default':
break;
case 'granted':
showNotification();
break;
case 'denied':
alert('用户仍是拒绝了该网站消息通知');
break;
}
});
}
function showNotification() {
new Notification('我是消息通知!');
}
复制代码
注意:若是第一次在域名控制台中执行上述代码,会提示你是否开启通知。若是开启过,就会自动显示通知。 javascript
注意:若是以前在域名中禁止消息通知,能够本身手动在开启,Notification是不能在禁止状态下代码设计开启消息通知的。 java
用户拒绝显示通知:promise
一旦用户禁止网站显示通知,网站就不能再请求用户受权显示通知,须要用户去设置中更改。浏览器
已谷歌为例,在浏览器设置中,开始添加或者开始网站的消息通知。不一样的浏览器通知设置的地方不太同样。 bash
// 判断浏览器是否支持Notification
if (window.Notification) {
switch (Notification.permission) {
case 'default':
alert('用户暂未开启该网站消息通知');
break;
case 'granted':
alert('用户已开启该网站消息通知');
break;
case 'denied':
alert('用户拒绝该网站消息通知');
break;
}
} else {
alert('暂不支持消息通知');
}
复制代码
为了不网站滥用通知扰民,在向用户显示通知以前,须要通过用户赞成。函数
Notification.permission 用于代表当前通知显示的受权状态,它有三个值:网站
Notification.requestPermission().then(permission => {
switch (permission) {
case 'default':
alert('用户关闭了受权');
break;
case 'granted':
alert('用户赞成受权')
break;
case 'denied':
alert('用户仍是拒绝了该网站消息通知');
break;
}
});
复制代码
当Notification.permission为granted时,请求到用户权限以后,没必要当即发送通知,能够在任意时刻,以任意形式来发送通知。ui
onst title = '这是自定义消息通知';
const options = {
body: 'body:字符串。通知的body内容。',
dir: 'auto',
icon: 'http://cdn.duitang.com/uploads/item/201410/21/20141021130151_ndsC4.jpeg'
};
const notification = new Notification(title, options);
复制代码
Notification的参数:this
1. title:消息通知标题spa
2. options:
const title = '这是自定义消息通知';
const options = {
body: 'body:字符串。通知的body内容。',
dir: 'auto',
icon: 'http://cdn.duitang.com/uploads/item/201410/21/20141021130151_ndsC4.jpeg'
};
const notification = new Notification(title, options);
notification.onclick = e => {
alert(1);
}
notification.onclose = e => {
alert(2);
}
notification.onshow = e => {
alert(3);
}
notification.onerror = e => {
alert(4);
}
复制代码
<template>
<div>
<button @click="grantedPermission">弹出消息</button>
</div>
</template>
<script type="text/javascript">
export default {
data() {
return {
}
},
created() {
// 判断浏览器是否支持Notification
if (window.Notification) {
switch (Notification.permission) {
case 'default':
this.defaultPermission();
break;
case 'granted':
this.grantedPermission();
break;
case 'denied':
alert('用户拒绝该网站消息通知');
break;
}
} else {
alert('暂不支持消息通知');
}
},
methods: {
/**
* [defaultPermission 当用户拒绝消息通知时,能够询问用户是否开启消息通知]
* @version [1.0]
*/
defaultPermission() {
Notification.requestPermission().then(permission => {
switch (permission) {
case 'default':
break;
case 'granted':
this.grantedPermission();
break;
case 'denied':
alert('用户仍是拒绝了该网站消息通知');
break;
}
});
},
/**
* [grantedPermission 运行消息通知状态,能够向发起消息通知]
*/
grantedPermission() {
const title = '这是自定义消息通知';
const options = {
body: 'body:字符串。通知的body内容。',
dir: 'auto',
icon: 'http://cdn.duitang.com/uploads/item/201410/21/20141021130151_ndsC4.jpeg'
};
const notification = new Notification(title, options);
notification.onclick = e => {
alert(1);
}
notification.onclose = e => {
alert(2);
}
notification.onshow = e => {
alert(3);
}
notification.onerror = e => {
alert(4);
}
}
}
}
</script>
复制代码
目前Notification除了IE浏览器不支持外, 其余浏览器都已支持桌面通知,移动端浏览器基本都未支持。