var NotificationHandler = {
???????isNotificationSupported: ‘Notification‘ in window,
???????isPermissionGranted: function () {
???????????return Notification.permission === ‘granted‘;
???????},
???????requestPermission: function () {
???????????if (!this.isNotificationSupported) {
???????????????console.log(‘当前浏览器不支持Notification API‘);
???????????????return;
???????????}
???????????Notification.requestPermission(function (status) {
???????????????var permission = Notification.permission;
???????????});
???????},
???????showNotification: function (Title, ImgUrl, Content, Tag) {
???????????if (!this.isNotificationSupported) {
???????????????console.log(‘当前浏览器不支持Notification API‘);
???????????????return;
???????????}
???????????if (!this.isPermissionGranted()) {
???????????????Notification.requestPermission(function (permission) {
???????????????????// 如果用户同意,就可以向他们发送通知
???????????????????if (permission === "granted") {
???????????????????????var n = new Notification(Title, {
???????????????????????????icon: ImgUrl,
???????????????????????????body: Content,
???????????????????????????tag: Tag,
???????????????????????????requireInteraction: true
???????????????????????});
???????????????????????n.onshow = function () {
???????????????????????};
???????????????????????//消息框被点击时被调用 ?
???????????????????????//可以打开相关的视图,同时关闭该消息框等操作 ?
???????????????????????n.onclick = function () {
???????????????????????????alert(1);
???????????????????????????//n.close();
???????????????????????};
???????????????????????//当有错误发生时会onerror函数会被调用 ?
???????????????????????//如果没有granted授权,创建Notification对象实例时,也会执行onerror函数 ?
???????????????????????n.onerror = function () {
???????????????????????????//do something useful ?
???????????????????????};
???????????????????????//一个消息框关闭时onclose函数会被调用 ?
???????????????????????n.onclose = function () {
???????????????????????????stopSound();
???????????????????????????UpdateIsRead(n.tag);
???????????????????????};
???????????????????}
???????????????});
???????????} else {
???????????????var n = new Notification(Title, {
???????????????????icon: ImgUrl,
???????????????????body: Content,
???????????????????tag: Tag,
???????????????????requireInteraction:true//设置为true 那么关闭就只有是用户来关闭 这样就可以保证是用户操作 (缺点 必须要用户去操作一次)
???????????????});
???????????????n.onshow = function () {
???????????????};
???????????????//消息框被点击时被调用 ?
???????????????//可以打开相关的视图,同时关闭该消息框等操作 ?
???????????????n.onclick = function () {
???????????????????//alert(1);
???????????????????//n.close();
???????????????};
???????????????//当有错误发生时会onerror函数会被调用 ?
???????????????//如果没有granted授权,创建Notification对象实例时,也会执行onerror函数 ?
???????????????n.onerror = function () {
???????????????????//do something useful ?
???????????????};
???????????????//一个消息框关闭时onclose函数会被调用 ?
???????????????n.onclose = function () {
???????????????????stopSound();
???????????????????UpdateIsRead(n.tag);
???????????????};
???????????}
???????}
???};
Notification web 桌面消息推送
原文地址:https://www.cnblogs.com/lovemj/p/9989196.html