使用 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格式化数字的函数代码
Nov 30 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
JS 对象(Object)和字符串(String)互转方法
May 20 Javascript
AngularJS实用开发技巧(推荐)
Jul 13 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
微信小程序 数据遍历的实现
Apr 05 Javascript
Angular.js组件之input mask对input输入进行格式化详解
Jul 10 Javascript
详解javascript中的变量提升和函数提升
May 24 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
vue实现页面滚动到底部刷新
Aug 16 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 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
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
javascript常见操作汇总
2014/09/03 Javascript
详解JS函数重载
2014/12/04 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
Python实现豆瓣图片下载的方法
2015/05/25 Python
python中执行shell的两种方法总结
2017/01/10 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
python计算导数并绘图的实例
2020/02/29 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
《老王》教学反思
2014/02/23 职场文书
小学班干部竞选演讲稿
2014/04/24 职场文书
大学班级学风建设方案
2014/05/01 职场文书
管理标语大全
2014/06/24 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
校运会加油稿大全
2015/07/22 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python