文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何实现html5桌面通知

2024-04-02 19:55

关注

这篇文章主要讲解了“如何实现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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯