使用 Javascript 实现浏览器推送提醒功能的示例


Posted in Javascript onNovember 03, 2017

本篇文章内容简单,速读只需两三分钟,通过这两三分钟的时间你就可以给自己的网站实现推送提醒的功能

Notification 类

简单明了,这个类就是负责推送消息的,只要用户当前没有关闭页面,及时是在使用其他程序,浏览器也能够将消息推送给用户

请求权限

我们在手机上都收到过消息推送,在接收推送之前我们会先将消息推送权限开放给应用。在浏览器中也一样,在使用浏览器推送之前,需要先获取权限

Notification.requestPermission().then(permission => {
  console.log(permission)
})

通过 requestPermission 方法可以为当前域名请求消息推送的权限,这个方法可以使用 Promise 语法来实现请求结果的处理。当然,你也可以使用回调的方式来实现

回调的参数 permission 表示当前请求后用户的选择:允许推送 / 不允许推送,它的值也分别有两个 granted / denied,当我们发现用户不允许的推送的时候,就可以在回调中做出相应的提示,告诉用户可能会导致不能及时接收消息,并且告诉用户如果想要接收消息该如何操作等

查看权限

由于推送的权限是基于域名的,因此同一个网站在请求一次权限后,下一次打开时就不会再次请求,而是直接通过第一次的用户选择来决定网站是否能向用户推送

因此我们就需要能够获取到当前网站的推送的状态,可以通过下面的这个属性来获取状态:

Notification.permission

permission 属性的值有三种:granted - 允许推送;denied - 拒绝推送;default - 还未申请权限

当值为 default 时,我们就可以向用户请求推送的权限了

发起一条推送

const note = new Notification (title, opts)

通过上面的方式可以声明一条推送,它有两个参数,第一个参数是消息的标题,这个是必填的一个参数;而通过第二个选填参数,我们则可以实现更多自定义的显示内容:

第二个参数接收一个对象,它有一下几个属性:

  1. body:推送的主体内容
  2. tag:推送的标识,如果我们声明了多个 Notification,而这些推送的 tag 都相同,则只会推送一次
  3. icon:需要在推送中显示的图标的 URL
  4. data:推送的消息所带有的数据信息,当用户点击推送窗口时,可以通过这些信息为用户展示相应的内容
  5. requireInteraction:正常情况下,推送发出后若用户没有操作,几秒后就会消失,而将该属性设为 true 则可以让推送始终维持而不消失,默认值是 false

当我们需要自定义推送显示时长的时候,可以通过最后一个属性将自动消失关闭,然后配合 note.close() 和 setTimeout 方法人为控制推送时长

点击推送事件

既然已经可以成功的发起一条推送,那么该如何监听到用户是否点击了这个推送呢?很简单,通过 onclick 属性就可以实现

note.onclick = () => {
  //在这里实现用户点击后的逻辑
}

其他

需要注意的是,并不是所有浏览器都支持 Notification,所以在使用前需要先检测能否使用

或许有的小伙伴会想,这个功能不错,这样在手机上也能实现网页消息推送了。然而很不幸的是,移动端浏览器几乎100%不支持 Notification :(

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript是怎么继承的介绍
Jan 05 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
Nov 30 Javascript
轮播图组件js代码
Aug 08 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
JS实现的类似微信聊天效果示例
Jan 29 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
生产制造追溯系统之在线打印功能
Jun 03 Javascript
js 判断当前时间是否处于某个一个时间段内
Sep 19 Javascript
JavaScript实现简单的图片切换功能(实例代码)
Apr 10 Javascript
Angular4绑定html内容出现警告的处理方法
Nov 03 #Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 #Javascript
React.Js添加与删除onScroll事件的方法详解
Nov 03 #Javascript
基于jQuery解决ios10以上版本缩放问题
Nov 03 #jQuery
nginx配置React静态页面的方法教程
Nov 03 #Javascript
angular中ui calendar的一些使用心得(推荐)
Nov 03 #Javascript
mui上拉加载更多下拉刷新数据的封装过程
Nov 03 #Javascript
You might like
图书管理程序(三)
2006/10/09 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
7个Javascript地图脚本整理
2009/10/20 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
SVG描边动画
2017/02/23 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
python 画图 图例自由定义方式
2020/04/17 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
初中物理教学反思
2014/01/14 职场文书
就业自我评价
2014/02/04 职场文书
淘宝活动策划方案
2014/02/06 职场文书
初三新学期计划书
2014/05/03 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
护士医德考评自我评价
2015/03/03 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL