文档章节

web实现消息推送及桌面提醒

王福林
 王福林
发布于 2017/09/06 08:47
字数 706
阅读 43
收藏 0

就类似我们之前描述的,来一个 HTML5 提醒面板,再放一段语音。这个就有些类似12306 的抢票了。

还是先看下我们的效果图:

image

我们重点说下 HTML5 Notification

Notification 从字面意思理解就是”提醒”、”注意”的意思。所以它的作用就是,我们在忙于其他工作时,也可以收到来自页面的消息通知,例如一个新订单或者新邮件来了。

作为 HTML5 的新东西,主流浏览器除了 IE 以外,其他浏览器较高版本都支持,只是有些样式的不同而已。

所以我们使用这些新特性的时候还是要考虑下用户的情况。

具体代码实现:

//浏览器兼容性处理
var Notification = window.Notification || 
                    window.mozNotification || 
                    window.webkitNotification;

var media = new Audio("http://****.mp3");  //语音地址

function showNotice(title,msg){
 if(Notification){
    Notification.requestPermission(function(status){
        //status默认值'default'等同于拒绝 'denied' 意味着用户不想要通知 'granted' 意味着用户同意启用通知
        if("granted" != status){
            return;
        }else{
            var tag = "order"+Math.random();  //产生随机tag,方便点击的时候定位处理
            var notify = new Notification(
                title,
                {
                    tag:tag,
                    icon:'http://******.png',//通知的缩略图,//icon 支持ico、png、jpg、jpeg格式
                    body:msg //通知的具体内容
                }
            );
            notify.onclick=function(){
                //如果通知消息被点击,通知窗口将被激活
                media.pause();
                window.focus();
                notify.close();
            };
            notify.onerror = function () {
                console.log("HTML5桌面消息出错!!!");
            };
            notify.onshow = function () {
                media.play();

                //5s 后自行停止通知
                setTimeout(function () {
                        notify.close();
                        media.pause();
                    }, 5000);
                }
            };
            notify.onclose = function () {
                console.log("HTML5桌面消息关闭!!!");
                media.pause();
            };
        }
    });
  }else{
    console.log("您的浏览器不支持桌面消息");
  }
};

具体的基本使用方法就是这些。我们最好还是了解下它的详细属性。

image

但是很多属性在使用过程中没有发现具体的作用,除了上面代码中使用到的,我只发现了两个比较有用的:

  1. image 给通知添加一个图片内容。如图:

image

  1. requireInteraction 。字面意思是 “需要互动、合作”,表示无法理解。
    默认为 false ,如果不处理提醒,系统会在20s之后会调用 onclose 事件,提醒自动消失;
    如果为 true ,我们会发现,系统不会自动进入 onclose ,消息是永久的,直到我们手动处理。所以这个属性可以创建持续性提醒面板。

比如这里我需要创建一个持续性提醒cms管理员有新订单,我们修改其中的一些方法:

var clickFlag=false; //是否已经点击
notify.onclick=function(){
     //如果通知消息被点击,通知窗口将被激活
     media.pause();
     window.focus();
     notify.close();
     clickFlag=true;  //通知已点
};

notify.onshow = function () {
     media.play();
     if(!clickFlag) {
         //每5s提醒一次
        setTimeout(function () {
           //notify.close();
           //media.pause();
           notify.onshow();
        }, 5000);
     }
  };

  notify.onclose = function () {
       console.log("HTML5桌面消息关闭!!!");
       media.pause();
       clickFlag=true;
   };

以上就是简单实现web消息推送及桌面提醒的全部内容。

本文转载自:http://imayi.me/2017/01/23/web%E5%AE%9E%E7%8E%B0%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81%E5%8F%8A%E6%A1%

共有 人打赏支持
王福林
粉丝 10
博文 94
码字总数 37444
作品 0
徐汇
程序员
即时通讯项目 - LuliChat

LuliChat是一个以Nutz为后台支撑,T-io为通讯支持,LayIM为前台UI交互的纯国产框架开发的一个即时通讯项目。 没有高端的架构,没有难以理解的高层次封装,一切从简,只为实现功能,可乃新手学...

蛋蛋i
2017/12/20
399
1
web消息推送notification的应用

最近使用国外的一些站点发现一个问题,例如FB,我打开浏览器明明没有打开FB怎么win下面会弹出FB的消息提醒?这个到底是怎么做到的呢~? 在浏览国内的一些站点貌似都没有这么做的,但是深入研...

leicc
2016/03/02
160
1
【JSConf EU 2018】有关浏览器弹出式窗口的相关探讨

在前端大爆发的今天,随着层出不穷的新技术和新框架的不断推出和W3C标准的不断更新,前端开发已经不局限于展示服务端返回的信息,而更多的去关注功能,这也带给了我们更多思考。 本次JSCONF2...

soyo_su
06/13
0
0
Firefox 17 Beta 发布

Firefox 保持速度,紧接着将 17 推送到 Beta 更新渠道。 桌面版本更新有: 启用危险插件点击播放策略。对于有安全隐患的旧插件,用户在收到安全提醒后需要手动点击才可使用。进一步避免老版本...

oschina
2012/10/12
1K
22
HTML5 桌面通知:Notification API 的应用

先看效果: image.png 这是利用html5桌面通知Notification API实现的,先看看代码,再分析Notification。 Notification API 是 HTML5 新增的桌面通知 API,用于向用户显示通知信息。该通知是脱...

极客教程
2017/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day123-20181021-英语流利阅读-待学习

这款新字体,比记忆面包还管用 Lala 2018-10-21 1.今日导读 字体能跟学习效果有什么关系?你还别说,来自澳洲的心理学家和设计师们,还真创造了一款号称能够帮助大家记忆信息、增强学习效果的...

飞鱼说编程
39分钟前
1
0
CMD命令行:查看 Windows 操作系统的安装时间

电脑越用越卡,计划以后每两个月重新安装一次系统。 那,怎么查看自己系统的安装日期? 问题抛出来了,其实很简单的。 cmd 中输入 systeminfo 命令,回车,等一会 …… 出来结果后,查找下面...

LivingInFHL
今天
3
0
复习

10月19日任务 打印某行到某行之间的内容 sed转换大小写 sed在某一行最后添加一个数字 删除某行到最后一行 打印1到100行含某个字符串的行 一.打印某行到某行之间的内容 #sed -n '/\[abcfd\]/...

hhpuppy
今天
3
0
精通Spring Boot——第十一篇:使用自定义配置

今天这篇文章给大家介绍自定义配置的两种方式 第一式: 使用@ConfigurationProperties,且看代码 package com.developlee.customconfig.config;import org.springframework.boot.context.p...

developlee的潇洒人生
今天
3
0
python:pycharm启动出现异常:io.netty.channel.ChannelException.....

尝试用管理员权限启动终端, 输入: netsh winsock reset 重启电脑. 360的优化搞出来的幺蛾子........

Oh_really
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部