用法:

(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);

作者:leoying
链接:https://www.jianshu.com/p/d4a98b9a3ffc
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

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

  1. ASP.NET Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用ASP.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEa ...

  2. 基于netty搭建websocket,实现消息的主动推送

    基于netty搭建websocket,实现消息的主动推送 rpf_siwash https://www.jianshu.com/p/56216d1052d7 netty是由jboss提供的一款开源框架 ...

  3. PHP Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用PHP实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...

  4. Web实时消息后台服务器推送技术GoEasy(支持多语言)---附GoEasy web 推送实例

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用 GoEasy, 它是一款第三方推送服务平台,使用它的 API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支 ...

  5. Python Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...

  6. C# Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持w ...

  7. C# Web实时消息后台服务器推送技术-GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用C#实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...

  8. Ruby Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...

  9. .NET Web实时消息后台服务器推送技术-GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推 ...

最新文章

  1. CodeArt SharePoint Permission Extension 1.0 beta publish
  2. 首个深度强化学习AI,能控制核聚变,成功登上《Nature》
  3. Kotlin极简教程:第9章 轻量级线程:协程
  4. android 纯c/c++开发(转)
  5. web前端是不是没有前景了?
  6. @RestControllerAdvice与@ControllerAdvice的区别
  7. C语言将结点s赋给表L,数据结构-单链表
  8. 【手势识别】基于matlab GUI石头剪刀布【含Matlab源码 774期】
  9. 如何制定项目里程碑?
  10. 【法律】如何保障未来夫妻合法权益:婚前房屋财产约定协议书
  11. 安卓源码目录最全解析
  12. proxy代理服务器,实现跨域
  13. RegistryKey类的学习(转载)
  14. 通达信交易系统接口实现自动交易策略的方法分享
  15. 用 Dev-C++ 编写简单的走迷宫小游戏
  16. java broken pipe_java.net.SocketException: Broken pipe问题解决
  17. 浅谈AutoCAD下载安装的那些三两事!
  18. linux wap,在 Linux 上构建 WAP 网关(初级)
  19. 基于PaddlePaddle和PaddleHub的口罩检测系统的落地实现
  20. html5 marquee,marquee_废弃 | Obsolete_HTML_参考手册_非常教程

热门文章

  1. Django实现单点登录(SSO)
  2. 谢邀:知乎IPO是一次对文化潮牌的估值
  3. 认识DDR SDRAM
  4. 无线网卡ping时显示hardware error的原因及解决方法
  5. 博图HMI仿真无法连接实际PLC进行监控
  6. Google Map API v3 - 设置边界和中心
  7. 手机实现实时人脸识别(二)
  8. Android自定义控件入门到精通--Region区域
  9. 【绊脚石】安装pycocotools和lap失败
  10. 什么是再生纤维素纤维