我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何实现html5桌面通知

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何实现html5桌面通知

这篇文章主要讲解了“如何实现html5桌面通知”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现html5桌面通知”吧!

html5桌面通知(Web Notifications)对于需要实现在新消息入线时,有桌面通知效果的情况下非常有用,在此简单介绍一下这个html5的新属性。

这里有个不错的demo:html5 web notification demo

从上面这个demo中 我们就可以获取所需要的基本核心代码,如下:

代码如下:

<script>
   var Notification = window.Notification || window.mozNotification || window.webkitNotification;

   Notification.requestPermission(function (permission) {
       // console.log(permission);
   });

   function show() {
       var instance = new Notification(
           "test title", {
               body: " test message"
           }
       );

       instance.onclick = function () {
           // Something to do
       };
       instance.onerror = function () {
           // Something to do
       };
       instance.onshow = function () {
           // Something to do
       };
       instance.onclose = function () {
           // Something to do
       };

       return false;
   }
</script>


 
其中:Notification.requestPermission 这句代码的功能就是向用户请求权限允许

通过以上的例子,基本思路我们已经有了,首先加载文档时,就向用户请求权限,获取权限后以后都so easy了。

代码如下:

window.addEventListener('load', function () {
 // At first, let's check if we have permission for notification
 if (Notification && Notification.permission !== "granted") {
   Notification.requestPermission(function (status) {
     if (Notification.permission !== status) {
       Notification.permission = status;
     }
   });
 }
});

火狐下 验证是通过的,但是在chrome下总是出不来,后来发现这样一段话

代码如下:

Not a Bug, Feature.

Desktop Notifications can only be triggered via a user action.  Typing into the
JavaScript console has the same effect as raw javascript code embedded into the web
page (no user action).  Typing the javascript into the location bar, however,
represents a user-action (the user is intentionally visiting a javascript link to
enable notifications, probably for sites that tend to use href="javascript:" instead
of onclick="".

I'm pretty sure this is a non-issue.

原来在chrome下是必须要用户手动触发的,否则,chrome浏览器会无视这段的js

但是在我们网站里肯定不可能加一个按钮或者超链接来显式的让用户授权吧,好吧, 实际上这也不是个事情,我们可以在用户经常点的按钮上顺便处理下这个授权就好,在chrome下是一次授权终身有用。除非你进入设置把他禁了。

整合一下,代码如下:

代码如下:

function showMsgNotification(title, msg){
   var Notification = window.Notification || window.mozNotification || window.webkitNotification;
   
   if (Notification && Notification.permission === "granted") {
       var instance = new Notification(
               title, {
               body: msg,
               icon: "image_url"
           }
       );

       instance.onclick = function () {
           // Something to do
       };
       instance.onerror = function () {
           // Something to do
       };
       instance.onshow = function () {
           // Something to do
//          console.log(instance.close);
           setTimeout(instance.close, 3000);
       };
       instance.onclose = function () {
           // Something to do
       };
    }else if (Notification && Notification.permission !== "denied") {
         Notification.requestPermission(function (status) {
             if (Notification.permission !== status) {
               Notification.permission = status;
             }
             // If the user said okay
             if (status === "granted") {
                 var instance = new Notification(
                       title, {
                           body: msg,
                           icon: "image_url"
                       }
                   );

                   instance.onclick = function () {
                       // Something to do
                   };
                   instance.onerror = function () {
                       // Something to do
                   };
                   instance.onshow = function () {
                       // Something to do
                       setTimeout(instance.close, 3000);
                   };
                   instance.onclose = function () {
                       // Something to do
                   };
                   
             }else {
                 return false
             }
           });
     }else{
         return false;
     }

}

感谢各位的阅读,以上就是“如何实现html5桌面通知”的内容了,经过本文的学习后,相信大家对如何实现html5桌面通知这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何实现html5桌面通知

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HTML5中如何实现Web Notification桌面通知功能

这篇文章主要介绍了HTML5中如何实现Web Notification桌面通知功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有的时候我们会在桌面右下角看到这样的提示:这种
2023-06-09

Html5中桌面通知Notification的实现示例

这篇文章主要介绍Html5中桌面通知Notification的实现示例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 实例一个Notificationlet n = new Notification(  "这是一
2023-06-09

vue如何实现浏览器桌面通知

本篇内容主要讲解“vue如何实现浏览器桌面通知”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue如何实现浏览器桌面通知”吧!浏览器桌面通知:当浏览器最小化,或者切换到其他标签页不在当前系统页面
2023-07-04

怎么在HTML5中实现Web Notification桌面右下角通知功能

这篇文章将为大家详细讲解有关怎么在HTML5中实现Web Notification桌面右下角通知功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。html5桌面通知(Web Notifica
2023-06-09

Linux系统如何开启VLC桌面通知

这篇文章的内容主要围绕Linux系统如何开启VLC桌面通知进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!VLC 播放器简介:VLC多媒体播放器是一款
2023-06-28

如何让Emacs shell命令发送桌面通知

小编给大家分享一下如何让Emacs shell命令发送桌面通知,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我总是使用 Eshell 来与操作系统进行交互,因为它
2023-06-16

vue实现浏览器桌面通知的示例代码

本文主要介绍了vue实现浏览器桌面通知的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-08

Unity如何实现桌面反弹

这篇文章将为大家详细讲解有关Unity如何实现桌面反弹,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一:演示视频二:代码实现using UnityEngine; public class Ball : M
2023-06-15

Java如何实现桌面日历

本篇内容介绍了“Java如何实现桌面日历”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题描述:编写一个程序,有一个窗口,该窗口为Borde
2023-07-02

云主机如何实现云桌面

云主机可以通过以下步骤来实现云桌面:1. 部署虚拟化平台:在云主机上部署虚拟化平台,如VMware、KVM或Hyper-V等,用于创建和管理虚拟机。2. 创建虚拟机:在虚拟化平台上创建多个虚拟机,每个虚拟机可以独立的云桌面提供给用户使用。3
2023-09-21

Html5页面中如何实现返回

小编给大家分享一下Html5页面中如何实现返回,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!看到这个题目你可能觉得这是什么鬼? 其实我想说的是这种,看下面的录制:这种交互在H5页面中比比皆是,点击城市->弹出城市选择浮层-
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录