Notification是window里面的一个对象,但它主要是依附在浏览器程序里面,意思说页面即使最小化了,它还可以运行。
Notification.permission是Notification对象的只读属性,三个值:“granted":用户允许,"denied":用户拒绝,还有第三个值default
,意思是不知道用户是允许还是拒绝。
Notification.requestPermission 方法:
当permission的值是default
时,此方法才会有效执行,询问用户是否授权网站通知推送;
它的参数是一个回调函数,当用户执行了允许或拒绝或关闭后,回调函数就会传入一个字符串,此字符串就是permission的三个值之一;
当permission是granted是就可以实例化Notification对象了。
Notification通过构造方法进行实例化:
var n = new Notification(title,options
);
title是通知的标题,options
是可选属性;
options 本来就是一个字面量,它包含Notification实例对象属性:
dir:文字方向,
body:通知内容,
lang:指定通知中所使用的语言。这个字符串必须在 BCP 47 language tag 文档中是有效的,
tag
: 赋予通知一个ID,以便在必要的时候对通知进行刷新、替换或移除。
icon:图片显示的地址;
Notification的实例对象属性都是只读的,在构造方法设置后不能修改。
事件处理
-
处理
click
事件的处理。每当用户点击通知时被触发。 -
处理
show
事件的处理。当通知显示的时候被触发。 -
处理
error
事件的处理。每当通知遇到错误时被触发。 -
处理
close
事件的处理。当用户关闭通知时被触发。
Notification.onclick
Notification.onshow
Notification.onerror
Notification.onclose
</pre><pre name="code" class="javascript">来个例子:
<pre name="code" class="javascript">window.addEventListener('load', function () {
if (!("Notification" in window)) {
//alert("您的浏览器不支持通知推送功能");
}else if(Notification.permission === "granted"){
showND();
}else if (Notification.permission !== 'denied') {
//向用户申请权限
Notification.requestPermission(function (permission) {
if (permission === "granted") {
showND();
}
});
}
});
function showND(){
var icon_="";
var data_={body:"",icon:icon_};
data_.body="hello!";
notifiy("我是标题",data_);
function notifiy(title,data){
var n = new Notification(title,data);
n.onclose=function(){
alert('close');
};
n.οnshοw=function(){
var t1=window.setTimeout(function(){
n.close();
//window.clearTimeout(t1);
},5000);
};
n.οnerrοr=function(){};
n.οnclick=function(){
alert('click');
}
}
参考地址:https://developer.mozilla.org/zh-CN/docs/Web/API/notification
</pre><pre name="code" class="javascript">来个例子:
<pre name="code" class="javascript">window.addEventListener('load', function () {
if (!("Notification" in window)) {
//alert("您的浏览器不支持通知推送功能");
}else if(Notification.permission === "granted"){
showND();
}else if (Notification.permission !== 'denied') {
//向用户申请权限
Notification.requestPermission(function (permission) {
if (permission === "granted") {
showND();
}
});
}
});
function showND(){
var icon_="";
var data_={body:"",icon:icon_};
data_.body="hello!";
notifiy("我是标题",data_);
function notifiy(title,data){
var n = new Notification(title,data);
n.onclose=function(){
alert('close');
};
n.οnshοw=function(){
var t1=window.setTimeout(function(){
n.close();
//window.clearTimeout(t1);
},5000);
};
n.οnerrοr=function(){};
n.οnclick=function(){
alert('click');
}
}