使用 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 相关文章推荐
js实现动态改变字体大小代码
Jan 02 Javascript
JQuery实现可直接编辑的表格
Apr 16 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
购物车前端开发(jQuery和bootstrap3)
Aug 27 Javascript
AngularJs 国际化(I18n/L10n)详解
Sep 01 Javascript
浅谈通过JS拦截 pushState和replaceState事件
Jul 21 Javascript
vue+swiper实现侧滑菜单效果
Dec 28 Javascript
vue.js+element-ui动态配置菜单的实例
Sep 07 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
JavaScript实现shuffle数组洗牌操作示例
Jan 03 Javascript
小程序云开发之用户注册登录
May 18 Javascript
浅谈react useEffect闭包的坑
Jun 08 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
php网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
php输入流php://input使用浅析
2014/09/02 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
妙用Jquery的val()方法
2012/06/27 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
JS获取网页图片name属性的方法
2015/04/01 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
form表单序列化详解(推荐)
2017/08/15 Javascript
javascript中的隐式调用
2018/02/10 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
Python自动重试HTTP连接装饰器
2015/04/28 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
Python中@property的理解和使用示例
2019/06/11 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
django用户登录验证的完整示例代码
2019/07/21 Python
python爬虫请求头设置代码
2020/07/28 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
日本最大的彩色隐形眼镜销售网站:CharmColor
2020/09/09 全球购物
中学生自我鉴定
2014/02/04 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
详解python字符串驻留技术
2021/05/21 Python
Win11 Dev 预览版25174.1000发布 (附更新修复内容汇总)
2022/08/05 数码科技