使用 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 相关文章推荐
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
Dec 20 Javascript
js关于精确计算和数值格式化以及直接引js文件
Jan 28 Javascript
js匿名函数的调用示例(形式多种多样)
Aug 20 Javascript
JavaScript实现输入框(密码框)出现提示语
Jan 12 Javascript
基于Angularjs实现分页功能
May 30 Javascript
react-redux中connect()方法详细解析
May 27 Javascript
JavaScript字符串检索字符的方法
Jun 23 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
Jul 21 Javascript
详解开源的JavaScript插件化框架MinimaJS
Oct 26 Javascript
bootstrap table支持高度百分比的实例代码
Feb 28 Javascript
微信小程序云开发如何实现数据库自动备份实现
Aug 16 Javascript
layui复选框限制选择个数的方法
Sep 18 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/08/01 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
2016/12/08 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
Node.js文本文件BOM头的去除方法
2020/11/22 Javascript
python实现代理服务功能实例
2013/11/15 Python
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python通过索引遍历列表的方法
2015/05/04 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
python监控进程脚本
2018/04/12 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
python下载微信公众号相关文章
2019/02/26 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
美国折扣网站:jClub
2017/08/07 全球购物
委托证明的格式
2014/01/10 职场文书
司法建议书范文
2014/05/13 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python