使用 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实现的在当前窗口中漂浮框的代码
Mar 15 Javascript
快速解决FusionCharts联动的中文乱码问题
Dec 04 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
js利用prototype调用Array的slice方法示例
Jun 09 Javascript
在父页面得到zTree已选中的节点的方法
Feb 12 Javascript
javascript中call,apply,bind函数用法示例
Dec 19 Javascript
Vue实现双向绑定的方法
Dec 22 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
layui 动态设置checbox 选中状态的例子
Sep 02 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 Javascript
js实现弹窗猜数字游戏
Nov 26 Javascript
node.js如何自定义实现一个EventEmitter
Jul 16 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数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
深入php list()函数的详解
2013/06/05 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
HTML的select控件美化
2017/03/27 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Python实用日期时间处理方法汇总
2015/05/09 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
Python tkinter label 更新方法
2018/10/11 Python
Python爬虫文件下载图文教程
2018/12/23 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
如何使用python实现模拟鼠标点击
2020/01/06 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
金融管理毕业生求职信
2014/03/03 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
三万活动总结
2014/04/28 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书