首页 > 编程语言 >JavaScript 使用 Notification 发送系统通知

JavaScript 使用 Notification 发送系统通知

时间:2022-10-30 17:35:10浏览次数:41  
标签:notice console Notification JavaScript 用户 发送 通知 false

使用 Notification 可以在系统级别发送页面外部显示的桌面通知,即使浏览器在后台运行也可以向用户发出消息

检查权限

发送通知需要用户授权,通过只读属性 Notification.permission 获取是否有权限,其属性值有

  • granted:用户已明确授权显示通知的权限
  • denied:用户已明确拒绝显示通知的权限
  • default:用户还未被询问是否授权

申请权限

Notification.requestPermission((res) => {
    console.log(res)  // granted、denied、default
})

创建通知

通过 new Notification("title", options) 创建一条通知,使用 options 对通知做一些自定义设置,包含

  • body: 通知的正文,显示在标题下方
  • tag:定义通知的标识,相同 tag 的通知正在显示的内容会被替换,已经自动关闭的会被替换不再弹出
  • icon:通知图标的 URL
  • image:通知中图像的 URL
  • renotify:重复的 tag 是否再次通知,默认 false 不重复通知
  • requireInteraction:是否强制手动关闭,默认 false 会自动关闭
  • silent:是否静音,默认 false 会有提示声音

当通知创建后会被立即显示出来,过一段时间会自动关闭,包含 4 个事件

  • onshow:当通知显示给用户时触发
  • onclick:当用户点击通知后触发(点击后通知会被关闭)
  • onclose:当使用 notice.close.bind(notice) 关闭通知后触发(自动关闭的通知无法触发)
  • onerror:当通知无法显示给用户时触发(常见于没有用户没有授权)
Notification.requestPermission((res) => {
    if(res !== 'granted') return
    let notice = new Notification("title", {
        body: 'body',
	tag: '111',
	icon: './a.png',
	image: './a.png',
	renotify: false,
	requireInteraction: true,
	silent: false,
    })
    notice.onshow = function () {
        console.log('show')
        setTimeout(notice.close.bind(notice), 5000)
    }
    notice.onclick = function () {
        console.log('click')
    }
    notice.onclose = function () {
        console.log('close')
    }
    notice.onerror = function () {
        console.log('error')
    }
})

注意

发出通知前要检查是否具有用户授权,否则通知无法发出

标签:notice,console,Notification,JavaScript,用户,发送,通知,false
From: https://www.cnblogs.com/adore/p/16839413.html

相关文章

  • JavaScript学习
    (只用于自己学习,只是个目录形式,具体内容涉及不多)JavaScript用于用户和网页之间的交互,比如提交的时候,用于用户名是否为空的判断 1.document是JavaScript的内置对象,代表浏......
  • JavaScript – Web Worker
    前言在上一篇<<单线程与执行机制>> 中,我们提到了WebWorker.它的诞生是为了解决JS主线程执行耗时计算时,导致UI无法及时更新的卡死现象.它的解决思路是把......
  • 3.登录发送验证码
    登录发送验证码1.接口说明2.流程分析客户端发送请求服务端调用第三方组件发送验证码验证码发送成功,存入redis响应客户端,客户端跳转到输入验证码页面3.代码实现3......
  • 2.封装短信发送服务组件
    封装短信发送服务组件企业开发中,往往将常见工具类封装抽取,以简洁便利的方式供其他工程模块使用。而SpringBoot的自动装配机制可以方便的实现组件抽取。SpringBoot执行流程......
  • javaScript简介和javaScript发展史
    *概念:一门客户端脚本语言*运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎*脚本语言:不需要编译,直接就可以被浏览器解析执行了*功能:*......
  • JS之循环发送请求代码优化
    需求:将数组中的值作为参数,循环调用新增接口实现批量导入功能。因为接口调用有时间间隔限制,避免误操作,所以需要设置接口请求的间隔时间。原代码如下:constrecursive=(arr,......
  • javascript:监控video全屏时取消静音(chrome 107.0.5304.87)
    一,js代码:<html><head><metacharset="utf-8"/><title>测试</title></head><body><divstyle="width:50%;height:100%;float:left;margin-left:-0.3px;pos......
  • JavaScript – event loop 事件循环, 单线程, Web Worker
    前言因为要写RxJS系列,有一篇要介绍scheduler.它需要基础的JS执行机制,于是就有了这里篇. 顺带也介绍以下WebWorker呗. 参考知乎–详解JavaScript中的......
  • JavaScript
    JavaScriptJavaScript(JS)是一种脚本语言,可以用来更改页面内容,控制多媒体,制作图像动画等.在body标签里面写一个script标签,在script标签里面编写JavaScript代码......
  • 【笔记07】Javascript - 基本概念 - (作用域)
    【笔记07】Javascript-基本概念-(作用域)functiontest(){}通常,我们把函数生成的空间叫做“作用域”,但这么说不精准。作用域属于函数,函数产生了作用域。一切为对象的东西,......