当前位置:首页 > 前端 > 正文内容

HTML5桌面通知开启代码片段

Z先生7年前 (2017-09-28)前端3250
<script type="text/javascript">
function showmsg() {
    mynotify = new Notification("页面消息提醒", {
        body: '当前共计收到N个页面消息提醒',
        icon: 'http://q.qlogo.cn/headimg_dl?dst_uin=2162010&spec=40',
        tag: 1
    });
    mynotify.onshow = function() {
        setTimeout(function() {
            mynotify.close();
        }, 5000);
    }
    mynotify.onclick = function() {
        window.location.href = "http://www.xcwl.com";
    }
    mynotify.onclose = function() {
        //可以在这里做一些有意义的事情,比如记录显示通知的次数
        document.write('ss');
    }
}
//判断浏览器是否支持桌面通知
if (window.Notification) {
    var notification = window.Notification;
    var mynotify;
    if (notification.permission == "granted") {
        //创建通知
        showmsg();
    }else if(notification.permission == "default") {
        //判断许可状态
        /*
        如果用户从未设置过此网站的桌面提醒状态(可能是第一次访问这个网站,或者以前允许过,但是在通知-例外中删除掉了),则调用requestPermission方法,让用户选择是否允许桌面提醒
        */
        notification.requestPermission(function(permission) {
            //在回掉函数中判断用户的选择,在这里不用为“拒绝”选项编写代码,因为既然拒绝,就什么都不做了,也不用为默认状态编写代码,因为既然已经弹出让用户选择的选项了,就没有所谓的默认状态了。所以只需要处理用户允许的状态就可以了
            if (permission == "granted") {
                //创建通知
                showmsg();
            }
        });
    }
}
</script>
</head>

new Notification(title, options)
通过new构造,显示通知。其中title是必须参数,表示通知小框框的标题内容,options是可选参数,对象,支持的参数以及释义见下表:

属性名释义
dir默认值是auto, 可以是ltrrtl,有点类似direction属性。表示提示主体内容的水平书写顺序。
lang提示的语言。没看出来有什么用。大家可以忽略之~
body提示主体内容。字符串。会在标题的下面显示。比方说上面的“好啊!(害羞.gif)”。
tag字符串。标记当前通知的标签。
icon字符串。通知面板左侧那个图标地址。
data任意类型和通知相关联的数据。
vibrate通知显示时候,设备震动硬件需要的振动模式。所谓振动模式,指的是一个描述交替时间的数组,分别表示振动和不振动的毫秒数,一直交替下去。例如[200, 100, 200]表示设备振动200毫秒,然后停止100毫秒,再振动200毫秒。
renotify布尔值。新通知出现的时候是否替换之前的。如果设为true,则表示替换,表示当前标记的通知只会出现一个。注意都这里“当前标记”没?没错,true参数要想其作用,必须tag需要设置属性值。然后,通知就会像这样覆盖:

 

而不会是默认的叠高楼:

silent布尔值。通知出现的时候,是否要有声音。默认false, 表示无声。
sound字符串。音频地址。表示通知出现要播放的声音资源。
noscreen布尔值。是否不再屏幕上显示通知信息。默认false, 表示要在屏幕上显示通知内容。

sticky布尔值。是否通知具有粘性,这样用户不太容易清除通知。默认false, 表示没有粘性。根据我自己的猜测,应该和positionsticky属性值类似。


分享给朋友:

相关文章

小程序二维码传参处理&UNIAPP H5传参兼容处理

首先小程序生成二维码,我这里调用的接口是:getUnlimited,我传递的参数是:invite=10001接着就是小程序中处理,如果直接扫二维码在App.vue的onLaunch中,使用decode...

简易CSS3仿照微信对话框

惯例,直接上代码HTML代码:<div class="say-box say-left"> <div class="s...

npm如何使用国内镜像源?

通过命令配置1. 命令淘宝源npm config set registry https://registry.npmmirror.com腾讯源npm ...

VUE打包时from UglifyJs Unexpected token: punc (()错误解决方案

归其原因是因为缺少ES2015的语法解析。因此进行如下2步操作即可解决问题:1、安装babel-preset-es2015npm install babel-preset-es20...

MUMU模拟器调试APP注意事项

MUMU模拟器默认ADB端口7555,所以要么修改MUMU默认端口,要么修改IDE编辑器链接端口为7555。做好这个MARK!...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。