您现在的位置是:网站首页> 编程资料编程资料
HTML5中的Web Notification桌面通知功能的实现方法Html5中的桌面通知Notification的实现HTML5实现桌面通知 提示功能HTML5实现Notification API桌面通知功能 html5桌面通知(Web Notifications)实例解析突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面
2021-08-31
1005人已围观
简介 这篇文章主要介绍了HTML5中的Web Notification桌面通知功能的实现方法,需要的朋友可以参考下
有的时候我们会在桌面右下角看到这样的提示:

这种桌面提示是HTML5新增的 Web Push Notifications 技术。
Web Notifications 技术使页面可以发出通知,通知将被显示在页面之外的系统层面上。能够为用户提供更好的体验,即使用户忙于其他工作时也可以收到来自页面的消息通知,例如一个新邮件的提醒,或者一个在线聊天室收到的消息提醒等等。
PS:除了IE外,各大现代浏览器都对这个桌面推送有了基本的支持。
开始
要创建一个消息通知,非常简单,直接使用 window 对象下面的 Notification 类即可,代码如下:
var n = new Notification("桌面推送", { icon: 'img/icon.png', body: '这是我的第一条桌面通知。', image:'img/1.jpg' });于是你就会看到系统桌面弹出我上面那张截图的通知。
PS:消息通知只有通过 Web服务访问 该页面时才会生效,如果直接双击打开本地文件,是没有任何效果的。也就是说你的文件需要使用服务器的形式打开,而不是直接使用浏览器打开本地文件。
当然也有可能你什么都没看到,别着急继续往下看。
基本语法
当然在想要弹出上面通知之前,有必要了解一下一个通知的基本语法:
let myNotification = new Notification(title, options);
title :定义一个通知的标题,当它被触发时,它将显示在通知窗口的顶部。
options (可选)对象包含应用于通知的任何自定义设置选项。
常用的选项有:
body: 通知的正文,将显示在标题下方。
tag: 类似每个通知的ID,以便在必要的时候对通知进行刷新、替换或移除。
icon: 显示通知的图标
image: 在通知正文中显示的图像的URL。
data: 您想要与通知相关联的任意数据。这可以是任何数据类型。
renotify: 一个 Boolean 指定在新通知替换旧通知后是否应通知用户。默认值为false,这意味着它们不会被通知。
requireInteraction: 表示通知应保持有效,直到用户点击或关闭它,而不是自动关闭。默认值为false。
当这段代码执行时,浏览器会询问用户,是否允许该站点显示消息通知,如下图所示:

只有用户点击了 允许 ,授权了通知,通知才会被显示出来。
授权
如何获取到用户点击的是“允许”还是“阻止”呢?
window的 Notification实例有一个 requestPermission 函数用来获取用户的授权状态:
// 首先,我们检查是否具有权限显示通知 // 如果没有,我们就申请权限 if (window.Notification && Notification.permission !== "granted") { Notification.requestPermission(function (status) { //status是授权状态。 //如果用户点击的允许,则status为'granted' // 如果用户点击的禁止,则status为'denied' // 这将使我们能在 Chrome/Safari 中使用 Notification.permission if (Notification.permission !== status) { Notification.permission = status; } }); }注意:如果用户点击了授权右上角的关闭按钮,则status的值为default。
之后,我们只需要判断 status 的值是否为 granted ,来决定是否显示通知。
通知事件
但是单纯的显示一个消息框是没有任何吸引力的,所以消息通知应该具有一定的交互性,在显示消息的前前后后都应该有事件的参与。
Notification一开始就制定好了一系列事件函数,开发者可以很方面的使用这些函数处理用户交互:
有: onshow , onclick , onerror , onclose 。
var n = new Notification("桌面推送", { icon: 'img/icon.png', body: '这是我的第一条桌面通知。' }); //onshow函数在消息框显示时触发 //可以做一些数据记录及定时关闭消息框等 n.onshow = function() { console.log('显示消息框'); //5秒后关闭消息框 setTimeout(function() { n.close(); }, 3000); }; //消息框被点击时被调用 //可以打开相关的视图,同时关闭该消息框等操作 n.onclick = function() { console.log('点击消息框'); // 打开相关的视图 n.close(); }; //当有错误发生时会onerror函数会被调用 //如果没有granted授权,创建Notification对象实例时,也会执行onerror函数 n.onerror = function() { console.log('消息框错误'); // 做些其他的事 }; //一个消息框关闭时onclose函数会被调用 n.onclose = function() { console.log('关闭消息框'); //做些其他的事 };
一个简单的例子
Document
当我们打开界面的时候,就会弹出授权申请,如果我们点击 允许 ,然后点击按钮,就可以发送一条通知到桌面,我们就可以在桌面右下角看到这条通知。

上面我们只是显示一条消息。
if (status === "granted") { var n = new Notification("Hi"); }如果我们有很多消息的话,比如我是用个for循环来模拟大量通知的情况。
for(var i=0; i<10; i++) { var n = new Notification("Hi,"+i); }可以看到有10条通知都显示出来。但是某些情况下对于用户来说,显示大量通知是件令人痛苦的事情。
比如,如果一个即时通信应用向用户提示每一条传入的消息。为了避免数以百计的不必要通知铺满用户的桌面,可能需要接管一个挂起消息的队列。

因此,需要为新建的通知添加一个 标记 。
如果有一条新通知和上一条通知具有相同的标记,那么这条新通知将会替换上一条通知,最后桌面上只会显示最新的通知。
还是上面的例子,只需要在触发通知加个 tag 属性即可:
for (var i = 0; i < 10; i++) { // 最后只看到内容为 "Hi! 9" 的通知 var n = new Notification("Hi! " + i, {tag: 'soManyNotification'}); }最后
消息通知是个不错的特性,可是也不排除有些站点恶意的使用这个功能,一旦用户授权之后,不时的推送一些不太友好的消息,打扰用户的工作,这个时候我们可以移除该站点的权限,禁用其消息通知功能。
我们可以点击浏览器地址输入框左边的叹号就有一个通知的选项,我们可以修改授权。或者在通知页面也有修改通知的选项,可以根据具体情况进行修改授权通知。


于是最基本的 Web Notification 就实现了。
总结
以上所述是小编给大家介绍的HTML5中的Web Notification桌面通知功能的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关内容
- html5视频媒体标签video的使用方法及完整参数说明详解html5用video标签流式加载的实现Html5 video标签视频的最佳实践html5自定义video标签的海报与播放按钮功能详解Html5中video标签那些属性和方法解决html5中的video标签ios系统中无法播放使用的问题
- Html5实现首页动态视频背景的示例代码html5视频媒体标签video的使用方法及完整参数说明详解HTML5实现视频弹幕功能HTML5 视频播放(video),JavaScript控制视频的实例代码HTML5视频播放插件 video.js介绍 HTML5自定义视频播放器源码
- HTML5自定义元素播放焦点图动画的实现HTML5语义化元素你真的用对了吗Html5新增标签与样式及让元素水平垂直居中浅谈HTML5中dialog元素尝鲜HTML5 source标签:媒介元素定义媒介资源HTML5新表单元素_动力节点Java学院整理 html5文本内容_动力节点Java学院整理 html5 input元素新特性_动力节点Java学院整理详解HTML5表单新增属性Html5元素及基本语法详解html5表单及新增的改良元素详解
- 使用Html5中的cavas画一面国旗HTML5 Canvas 破碎重组的视频特效的示例代码前端实现打印图像功能html5 canvas绘制网络字体的常用方法导出HTML5 Canvas图片并上传服务器功能
- 关于canvas绘制模糊问题的解决方法高清屏中使用Canvas绘图出现模糊的问题及解决方法深入了解canvas在移动端绘制模糊的问题解决HTML5 Canvas图像模糊完美解决办法html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
- html svg生成环形进度条的实现方法HTML5超炫酷粒子效果的进度条的实现示例HTML5触摸事件实现移动端简易进度条的实现方法HTML5实现自带进度条和滑块滑杆效果网页加载进度条详解(推荐)HTML页面缩小后显示滚动条的示例代码
- html2 canvas生成清晰的图片实现打印功能html2canvas生成的图片偏移不完整的解决方法html2canvas截图空白问题的解决使用html2canvas实现将html内容写入到canvas中生成图片html2canvas.js 实现页面截图html2 canvas svg不能识别的解决方案
- 将SVG图引入到HTML页面的实现HTML5如何使用SVG的方法示例Html5之svg可缩放矢量图形_动力节点Java学院整理使用HTML5进行SVG矢量图形绘制的入门教程深入浅析HTML5中的SVGhtml5+svg学习指南之SVG基础知识html5中svg canvas和图片之间相互转化思路代码HTML中使用SVG与SVG预定义形状元素介绍
- 解析浏览器的一些“滚动”行为鉴赏 CSS3改变浏览器滚动条样式纯css修改浏览器scrollbar滚动条样式示例纯CSS改变webkit内核浏览器的滚动条样式强制显示、隐藏(IE\Mozilla)浏览器的滚动条实现代码CSS自定义WebKit内核浏览器滚动条实现代码JS+CSS实现侧边栏跟随浏览器滚动效果FireFox火狐浏览器与IE兼容问题 - 透明滤镜 DIV滚动条
- html5移动端价格输入键盘的实现可能这些是你想要的H5软键盘兼容方案(小结)HTML5 虚拟键盘出现挡住输入框的解决办法利用HTML5 Canvas制作键盘及鼠标动画的实例分享HTML5 Canvas鼠标与键盘事件demo示例
