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);
作者:leoying
链接:https://www.jianshu.com/p/d4a98b9a3ffc
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
HTML5特性之谷歌浏览器桌面消息(window.Notification)推送:相关推荐
- ASP.NET Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用ASP.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEa ...
- 基于netty搭建websocket,实现消息的主动推送
基于netty搭建websocket,实现消息的主动推送 rpf_siwash https://www.jianshu.com/p/56216d1052d7 netty是由jboss提供的一款开源框架 ...
- PHP Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用PHP实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...
- Web实时消息后台服务器推送技术GoEasy(支持多语言)---附GoEasy web 推送实例
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用 GoEasy, 它是一款第三方推送服务平台,使用它的 API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支 ...
- Python Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...
- C# Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持w ...
- C# Web实时消息后台服务器推送技术-GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用C#实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...
- Ruby Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...
- .NET Web实时消息后台服务器推送技术-GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推 ...
最新文章
- CodeArt SharePoint Permission Extension 1.0 beta publish
- 首个深度强化学习AI,能控制核聚变,成功登上《Nature》
- Kotlin极简教程:第9章 轻量级线程:协程
- android 纯c/c++开发(转)
- web前端是不是没有前景了?
- @RestControllerAdvice与@ControllerAdvice的区别
- C语言将结点s赋给表L,数据结构-单链表
- 【手势识别】基于matlab GUI石头剪刀布【含Matlab源码 774期】
- 如何制定项目里程碑?
- 【法律】如何保障未来夫妻合法权益:婚前房屋财产约定协议书
- 安卓源码目录最全解析
- proxy代理服务器,实现跨域
- RegistryKey类的学习(转载)
- 通达信交易系统接口实现自动交易策略的方法分享
- 用 Dev-C++ 编写简单的走迷宫小游戏
- java broken pipe_java.net.SocketException: Broken pipe问题解决
- 浅谈AutoCAD下载安装的那些三两事!
- linux wap,在 Linux 上构建 WAP 网关(初级)
- 基于PaddlePaddle和PaddleHub的口罩检测系统的落地实现
- html5 marquee,marquee_废弃 | Obsolete_HTML_参考手册_非常教程