美文网首页HTML5Web前端之路让前端飞
HTML5特性之谷歌浏览器桌面消息(window.Notific

HTML5特性之谷歌浏览器桌面消息(window.Notific

作者: leoying | 来源:发表于2016-12-13 16:19 被阅读1817次

    HTML5特性之谷歌浏览器桌面消息(window.Notification)推送:

    用法:

    (1)消息推送会默认关闭-主要通过window.Notification.permission来判断

    "denied"  --- 为用户点击了禁用(拒绝打开推送功能)

    "default" ----推送功能默认关闭

    "granted" ----推送功能为开启状态(用户点击允许后的状态)

    在浏览器载入的时候可以选择判断状态

    ```

    if(window.Notification.permission=="default"){

    //如果没有开启,something

    }

    ```

    (2)让用户选择是否同意开启推送的API是window.Notification.requestPermission(callback);

    requestPermission是一个函数,内部需要一个回调函数,用户一旦做出选择,则会触发该回调

    ```

    window.Notification.requestPermission(function(stauts){

    //用户如果做出选择会触发回调

    //stauts 这个值就能判断出用户到底是做了哪种选择(返回的是一个字符串状态,参考第一条);

    });

    ```

    (3)如果开启后则可以创建消息推送实例了,通过new关键字来创建  new Notification(title,option)

    这里面有两个参数,第一个是标题指定字符串即可

    第二个是配置选项option = {body:内容,icon:图标}//后面还有其他的可选项

    option对象里面的body是展示消息的内容,icon是用来放推送消息的图标的(可指定icon图片路径均可);

    (4)创建推送消息之后还会返回有默认的事件:onclick,onshow,onclose

    var notify = Notification(title,option);

    通过notify来指定:

    notify.onclick = function(){}

    notify.onshow = function(){}  //一般会给个setTimeOut让它关闭掉

    notify.onclose = function(){}

    注意:1.目前该特性仅支持版本比较新的火狐或者谷歌浏览器

    2.之前偏旧一点的浏览器可能是使用(window.webkitNotification)对象来判断和实例化推送功能,

    但是在现在新版本中均使用(window.Notification)对象,不再支持webkitNotification

    3.本地只能测试是否开启本地提示选项,无法实现消息推送测试,需要真的实现消息推送需要将程序

    部署到服务端

    4.当你选择开启或者关闭后,页面刷新后即使告诉浏览器再次选择,此时是无效的,

    选择一次后会默认储存当前选择,下次打开浏览器的时候将不会再次提示你。

    贴代码示例:

    (function(window){

    var index = 0;

    var permission = "default";

    var sjNotify = function(title,content,icon){

    var Notification = window.Notification || window.mozNotification || window.webkitNotification;

    if (!Notification) {

    alert("您的浏览器不支持此特性");

    return false;

    }

    if(Notification && permission==="default" && index===0){

    //支持,但是未开启桌面提醒,进行相关操作、或提示开启

    window.Notification.requestPermission(function(status){

          permission = status;

         index++;

           });

    }

    else

    {

    var options = {

    body: content,

    icon: icon || "./static/sj/img/notify.ico"

    };

    if (permission === "granted"){

    //支持并且开启桌面消息提醒

    var instance = new Notification(title, options);

    instance.onclick = function() {

    instance.close();

    };

    instance.onerror = function() {

    };

    instance.onshow = function() {

    setTimeout(function () {

    instance.close();

    },3000)

    console.log(instance.body)

    };

    instance.onclose = function() {

    };

    }

    else if (permission == "denied")

    {

    //支持但是未开启

    return false;

    }

    else

    {

    //用户已经忽略选择

    return false;

    }

    }

    }

    window.sjNotify = sjNotify;

    })(this);

    相关文章

      网友评论

      • 25c0b4dcbc7c:有办法做到http:// 也可以弹出消息吗
      • Wang_AnQing:提一个问题,默认的位置在右下角,有方法改为右上角吗?
      • 4e5f67d086be:没有任何反应啊。。。。
        leoying:@逝水流光 一般浏览器在服务端,初次加载的时候会提示你否开启这个功能,选择一次后后期可能不会再提示
        4e5f67d086be: @leoying 嗯嗯 确实是 不过代码中好像没调用那个函数
        leoying:@逝水流光 需要在服务端做测试,另外注意一下浏览器版本的问题,用谷歌浏览器测试

      本文标题:HTML5特性之谷歌浏览器桌面消息(window.Notific

      本文链接:https://www.haomeiwen.com/subject/vblssttx.html