h5桌面通知Notification

H5中的桌面通知Notification

  前言: 对于一个前段开发者,逛网页总会留意一些新奇的功能,对于上班总会用到Teambition的我,总是能收到Notification...所以今天就来研究下这个H5功能...



  1. 实例一个Notification

let n = new Notification(  "这是一个通知消息",                  //这是必选Title  一定会显示的通知标题  {
     icon: "xxx.png",               // 这个icon是用来显示通知中的左边图片
     body: "你好啊,我是xxx",        // 通知中的内容字符    dir: auto,             // 文字的方向 值包含: auto(自动), ltr(从左到右), rtl(从右向左)    tag: "gxlself"          //  给与这个通知消息一个ID, 用来对这个通知消息进行 刷新.移除.替换 等操作    // long: "en-US"               //lang字段 需要参考https://tools.ietf.org/html/bcp47 并不是必须 没看出啥作用...    // ...            // 其余可选属性见下实例属性
  })访问对应的实例属性:n.actions // 一个只读的NotificationAction对象数组。每一个对象描述用户可以在一个通知中选择的单个操作。n.image   // 通知的一部分显示的图像的URLn.badge   // 当没有足够的空间显示通知本身时,用于表示通知的图像的URL。n.permission   // 有三个值 granted, denied, 或default  当状态值为granted时可以发送通知消息  default默认用户没处理  denied 用户拒绝  n.renotify    // 布尔值。新通知出现的时候是否替换之前的。如果设为true,则表示替换,表示当前标记的通知只会出现一个。注意这里的“当前标记”没?没错,true参数要想起作用,tag必须需要设置属性值。n.requireInteraction   // 布尔值, 指的是通知是否保持活动直到用户点击或取消通知 而不是自动关闭..n.silent    // 布尔值。通知出现的时候,是否要有声音。默认false, 表示无声。n.timestamp   //通知创建或者可以使用的时间。n.data   // 任意类型和通知相关联的数据。n.vibrate  // 通知显示时候,设备震动硬件需要的震动模式。所谓振动模式,指的是一个描述交替时间的数组,分别表示振动和不振动的毫秒数,一直交替下去。例如[200, 100, 200]表示设备振动200毫秒,然后停止100毫秒,再振动200毫秒。 (移动端)n.sound   // 字符串。音频地址。表示通知出现要播放的声音资源。n.sticky   // 通知吸附不容易被清除... (移动端)n.noscreen // 布尔值。是否不再屏幕上显示通知信息。默认false, 表示要在屏幕上显示通知内容。(移动端)

此时实例 n 有四个事件处理:  1> onclick 用户对通知信息的点击事件 2> onshow  通知消息展示之后触发的事件   3> onerror 遇到错误会触发的事件 4> onclose close事件的处理

  2. Notification对象会有什么属性/方法呢?利用控制台中的window对象输出点开查看就可以看到:

  值得注意的是: requestPermission()方法仅在Notification对象有效,实例对象无效!!!这个方法是用来向用户申请显示通知的权限,只能被用户主动去调用(在页面onload中可以调用,可以向用户申请,之后再去发送...)

  

  实例对象拥有的方法有:

    (1). close()  用于关闭通知消息 --> 也可以在onshow方法加延迟调用,提高用户体验感...

    (2). addEventListener() 监听事件(这个通用方法)

    (3). removeEventListener 卸载监听事件(通用,同上)

    (4). dispatchEvent 分派事件(同上)

 

接下来,写一个js测试, 如果使用的是谷歌浏览器,建议在设置中显示通知将本地服务地址加入允许通知

但是,http的域名在谷歌浏览器被默认关闭,还不允许更改,查看谷歌浏览器控制台有警告信息--->

index.js:78 [Deprecation] The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

嗯,好吧,让加https证书,真的是有毒...虽然在自己的主页中添加该功能也只能在火狐浏览器爽一爽....

(腾讯云有免费一年的ssl证书,可自己进行安装...)

// index.jswindow.onload = function(){  let gxlself = new Gxlself()  gxlself.requestPermission()  setTimeout(()=>{    gxlself.showNotification()  },3000)}

class Gxlself{   constructor(){    this.isNotificationSupported = "Notification" in window;   }
    isPermissionGranted(){
        return Notification.permission === ‘granted‘;
    }
    requestPermission(){
        if(!this.isNotificationSupported){
            return;
        }
        Notification.requestPermission(status=>{
            let permission = Notification.permission;
        })
    }
    showNotification(){
        if (!this.isNotificationSupported) {
            return;
        }
        if (!this.isPermissionGranted()) {
            return;
        }
        var n = new Notification("gxlself对您发来问候", {
            icon : ‘gxlself.png‘,
            body : ‘欢迎来访,鄙人万分感激! 点击即可跳转至我的博客页面~‘
        });
        n.onshow = function () {
            console.log(‘gxlself已经发送通知信息‘);
            setTimeout(function() {
                n.close();
            }, 5000);
        }
        n.onclick = function () {
            location.href = ‘http://gxlself.com/blog‘
            n.close()
        }
        n.onerror = function (err) {
            console.log(err)
        }
        n.onclose = function () {
            console.log(‘gxlself消息窗口关闭‘)
        }
    }
}

这是火狐浏览器执行后的效果展示:

再来看看谷歌本地跑的效果:(域名已经被默认拦截关闭,上面已经说明,不再重复)

谷歌的效果其实挺好看的,嗯...只是一个https把我给屏蔽了   哎...

  -------  桌面版应用 -----------

  当你要在开放 web 应用中使用通知时,请确保将 desktop-notification 权限添加到你的 manifest 文件中。通知可以被用于任何权限级别,hosted 或更高。

  "permissions": {
      "desktop-notification":{}
  }


这个Notification比较好玩,也是未来发送消息的一个重要的一块,留此记录...

原文地址:https://www.cnblogs.com/gxlself/p/9697240.html

时间: 2024-10-13 08:58:28

h5桌面通知Notification的相关文章

Chrome浏览器扩展开发系列之十:桌面通知Notification

Desktop Notification也称为Web Notification,是在Web页面之外,以弹出桌面对话框的形式通知用户发生了某事件.Web Notification于2015.9.10成为W3C推荐标准,网址https://www.w3.org/TR/notifications/.每个通知对话框都包括title, direction, language和origin.通知对话框还可以有body, tag, icon URL和icon image. 通知必须获得用户的授权才能够显示,从

HTML5桌面通知:notification api

1. 为什么需要HTML5的桌面通知 传统的桌面通知可以写一个div放到页面右下角自动弹出来,并通过轮询等等其他方式去获取消息并推送给用户.这种方式有个弊端就是:当我在使用京东 进行购物的时候,我是不知道人人网有消息推送过来给我的,而必须要等我把当前页面切到人人网才知道有消息推送了.这种方式的消息推送它是基于页面存活的, 但是我们需要这么一种策略:无论你在看哪个页面,只要有消息都应该能推送给我看到,这就是webkitNotification要解决的问题. Notification生成的消息不依附

[html5] (Notification) 桌面通知

前几天要做一个桌面通知的功能,翻查以前做的笔记,发现webkitNotifications这个已经不能用了,baidu了下,基本都是介绍webkitNotifications的,后来在SOF上找到答案,现在chrome支持的是Notification,估计是W3C标准化了.api也变了,mark之. Notification Properties title:"别动神仙说:" body:"这里是body" icon:"http://q4.qlogo.cn/

兼容 谷歌、火狐、360系列浏览器桌面通知()有用

兼容 谷歌.火狐.360系列浏览器桌面通知(有用) 本文从总结工作,并且参照大量的网络资源的.我们希望有同样需求的朋友来帮忙. (部分): http://xsk.tehon.org/den/index.php/category/tech/html5-audio-notifications.html http://ttsvetko.github.io/HTML5-Desktop-Notifications/# http://www.cnblogs.com/meteoric_cry/archive/

浏览器桌面通知(notifications)

近期在做公司后台管理系统,当有任务到来时,须要通知当事人,可是 当事人有可能在做别的,浏览器有可能会被最小化,这样就非常难看到通知了.经过查找发现有些浏览器能够使用noitfications.能够在桌面的通知区域内显示一个提示框,而且显示在桌面的最前面,非常方便就能看到了.我就将它简单的封装一下,使其符合经常使用的使用场景. 功能效果类似webQQ的消息提示通知. 项目地址:https://github.com/rentiansheng/notification chrome 浏览器桌面通知 简

JavaScript 兼容新旧版chrome和firefox的桌面通知

1.新/旧版本的chrome和firefox都可支持,IE下不支持因此设置为了在最小化窗口处闪烁显示提示文字. 2.设置为提示窗口显示5秒即关闭. 3.可设置图标和点击提示窗口要跳转到的页面(见输入参数). var timer = null, title = $('title').text(); $('body').on('click', function() { clearInterval(timer); $('title').text(title); }); function showMsg

HTML5实战之桌面通知

桌面通知功能能够让浏览器即使是最小化状态也能将消息通知给用户.这和WebIM是最为天然的结合.不过,目前支持Desktop Notification功能的浏览器只有Chrome5+. 关于通知的基础知识可以参考以下文档: W3C标准:http://dev.w3.org/2006/webapi/WebNotifications/publish/Notifications.html 使用教程:http://www.html5rocks.com/en/tutorials/notifications/q

chrome扩展,如何阻止浏览自动关闭桌面通知.

(!!!!以前的好用的, 现在不行了~) 做chrome扩展桌面通知, 可能不想让浏览器自动关闭某个重要的桌面通知.那就不要使用 chrome.notifications.create 可以用 Web Notifications用法: var notification = new Notification( "New Email Received", {icon: "mail.png", tag: {msg} }); notification.onshow = fu

chrome浏览器的桌面通知

最近在使用朋友网(不加链接,避免有打广告的嫌疑),发现会出现提示“是否允许网站显示桌面通知?”,如下图所示: 这种做法,在页面加载完时直接调用请求,比起开心网的这种提示感觉有些野蛮了.开心网的桌面通知提示如下: 先检查用户是否已经允许了本站的桌面通知,在未允许的情况下:点击后Chrome才出现提示,感觉更人性化一些,起码这个通知出现是由用户主动触发的. 这两个网站,发现桌面通知主要用于webIM的消息提醒.查了下资料,大概了解和掌握了Chrome桌面通知的.做了如下图所示的一个Demo: 完整的