chrome浏览器的桌面通知

最近在使用朋友网(不加链接,避免有打广告的嫌疑),发现会出现提示“是否允许网站显示桌面通知?”,如下图所示:

这种做法,在页面加载完时直接调用请求,比起开心网的这种提示感觉有些野蛮了。开心网的桌面通知提示如下:

先检查用户是否已经允许了本站的桌面通知,在未允许的情况下:点击后Chrome才出现提示,感觉更人性化一些,起码这个通知出现是由用户主动触发的。

这两个网站,发现桌面通知主要用于webIM的消息提醒。查了下资料,大概了解和掌握了Chrome桌面通知的。做了如下图所示的一个Demo:

完整的示例代码如下:

   1: <!DOCTYPE html>
   2: <html>
   3: <head>
   4: <title>Google 桌面通知</title>
   5: <meta name="generator" content="editplus" />
   6: <meta name="author" content="" />
   7: <meta name="keywords" content="" />
   8: <meta name="description" content="" />
   9: <meta http-equiv=‘content-type‘ content=‘text/html; charset=utf-8‘ />
  10: </head>
  11: <body>
  12:  
  13: <button id=‘btn‘>显示桌面通知</button> 
  14:  
  15: <script type=‘text/javascript‘>
   1:  
   2: document.querySelector("#btn").addEventListener(‘click‘, notify, false);
   3:  
   4: function notify() {
   5:     if (window.webkitNotifications) {
   6:         if (window.webkitNotifications.checkPermission() == 0) {
   7:             var notification_test = window.webkitNotifications.createNotification("http://images.cnblogs.com/cnblogs_com/flyingzl/268702/r_1.jpg", ‘标题‘, ‘内容‘+new Date().getTime());
   8:             notification_test.display = function() {}
   9:             notification_test.onerror = function() {}
  10:             notification_test.onclose = function() {}
  11:             notification_test.onclick = function() {this.cancel();}
  12:             
  13:             notification_test.replaceId = ‘Meteoric‘;
  14:  
  15:             notification_test.show();
  16:                         
  17:             var tempPopup = window.webkitNotifications.createHTMLNotification(["http://www.baidu.com/", "http://www.soso.com"][Math.random() >= 0.5 ? 0 : 1]);
  18:             tempPopup.replaceId = "Meteoric_cry";
  19:             tempPopup.show();
  20:         } else {
  21:             window.webkitNotifications.requestPermission(notify);
  22:         }
  23:     } 
  24: }
</script>
  16: </body>
  17: </html>

Setp:

1、先判断当前的浏览器是否支持开启桌面通知 window.webkitNotifications;

2、响应用户操作,如果用户之前已经允许本站的桌面通知,则window.webkitNotifications.checkPermission()会返回0;

3、如果用户之前拒绝或是未允许开启桌面通知,可使用window.webkitNotifications.requestPermission(callback);再次弹出询问用户的提示,否则当用户之前拒绝过,按钮点击了也是不会有响应操作的。

注:在给notification实例对象指定replaceId可防止弹出过多的桌面通知(类似唯一标识,弹出同名的replaceId通知实例时,后面的通知会覆盖之前的通知)。

但我在查看W3C的文档时,发现它里面标有一个setReplaceId的方法,可实际上是没有这个方法,取而代之的是名为“replaceId”的属性。

具体产品(如webIM)中如果实现的,可以参考这一篇文章:<HTML5实战之桌面通知>,如果去开心网查看实现的源码,可以看到如下的实现:

本文参考链接:

1)、<HTML5实战之桌面通知>

2)、W3C标准—Notifications

3)、html5rocks的实例>>

4)、<google chrome下桌面提示>

桌面通知,也可以由用户在Chrome浏览器中自定义:板手 -> 选项  -> 高级选项 –> 通知 (管理例外情况…)。

时间: 2024-10-29 01:06:42

chrome浏览器的桌面通知的相关文章

Chrome中显示桌面通知

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <html> <head>     <title>Google 桌面通知</title> </head> <body>     <button id="btn">         显示桌面通知</button>

如何让Chrome浏览器可以加载本地XML文件?

Chrome浏览器的安全限制,禁止本地加载XML等外部文件,如何设置让其可以加载呢? 有两种方法,第一种是在本地服务器环境下浏览,采用 http://localhost/ 的方式浏览你的网页和文件,就 Chrome浏览器的安全限制,禁止本地加载XML等外部文件,如何设置让其可以加载呢? 有两种方法, 第一种是在本地服务器环境下浏览,采用http://localhost/的方式浏览你的网页和文件,就不再有本地安全限制的问题了. 第二种方法,采用设置参数方式来启动Chrome浏览器. 在已安装的Ch

chrome——关于chrome浏览器的奇葩问题

前言 说下自己遇到的关于chrome的奇葩问题~ 问题 目前就一个,还是刚才才遇到的~ 消息通知 客户的chrome浏览器死活没有通知,检查后发现通知权限未开启, 通知权限开启后,还是没有提示,最后排查发现协议存在问题,需要 使用https协议访问! 原文地址:https://www.cnblogs.com/wangyang0210/p/11024493.html

Chrome浏览器扩展开发系列之十:桌面通知Notification

Desktop Notification也称为Web Notification,是在Web页面之外,以弹出桌面对话框的形式通知用户发生了某事件.Web Notification于2015.9.10成为W3C推荐标准,网址https://www.w3.org/TR/notifications/.每个通知对话框都包括title, direction, language和origin.通知对话框还可以有body, tag, icon URL和icon image. 通知必须获得用户的授权才能够显示,从

浏览器桌面通知(notifications)

近期在做公司后台管理系统,当有任务到来时,须要通知当事人,可是 当事人有可能在做别的,浏览器有可能会被最小化,这样就非常难看到通知了.经过查找发现有些浏览器能够使用noitfications.能够在桌面的通知区域内显示一个提示框,而且显示在桌面的最前面,非常方便就能看到了.我就将它简单的封装一下,使其符合经常使用的使用场景. 功能效果类似webQQ的消息提示通知. 项目地址:https://github.com/rentiansheng/notification chrome 浏览器桌面通知 简

JavaScript 兼容新旧版chrome和firefox的桌面通知

1.新/旧版本的chrome和firefox都可支持,IE下不支持因此设置为了在最小化窗口处闪烁显示提示文字. 2.设置为提示窗口显示5秒即关闭. 3.可设置图标和点击提示窗口要跳转到的页面(见输入参数). var timer = null, title = $('title').text(); $('body').on('click', function() { clearInterval(timer); $('title').text(title); }); function showMsg

chrome扩展,如何阻止浏览自动关闭桌面通知.

(!!!!以前的好用的, 现在不行了~) 做chrome扩展桌面通知, 可能不想让浏览器自动关闭某个重要的桌面通知.那就不要使用 chrome.notifications.create 可以用 Web Notifications用法: var notification = new Notification( "New Email Received", {icon: "mail.png", tag: {msg} }); notification.onshow = fu

兼容 谷歌、火狐、360系列浏览器桌面通知()有用

兼容 谷歌.火狐.360系列浏览器桌面通知(有用) 本文从总结工作,并且参照大量的网络资源的.我们希望有同样需求的朋友来帮忙. (部分): http://xsk.tehon.org/den/index.php/category/tech/html5-audio-notifications.html http://ttsvetko.github.io/HTML5-Desktop-Notifications/# http://www.cnblogs.com/meteoric_cry/archive/

HTML5桌面通知:notification api

1. 为什么需要HTML5的桌面通知 传统的桌面通知可以写一个div放到页面右下角自动弹出来,并通过轮询等等其他方式去获取消息并推送给用户.这种方式有个弊端就是:当我在使用京东 进行购物的时候,我是不知道人人网有消息推送过来给我的,而必须要等我把当前页面切到人人网才知道有消息推送了.这种方式的消息推送它是基于页面存活的, 但是我们需要这么一种策略:无论你在看哪个页面,只要有消息都应该能推送给我看到,这就是webkitNotification要解决的问题. Notification生成的消息不依附