记得在上一次的项目中需要实现一个BS的IM通信小功能、当新信息到达时 会在当前网站的右下角弹出一小弹框来提示用户有新的信息了。当时是在站内弹出一个类似WINDOW这样的窗口来实现的。其实这也可以满足用户的需求、当客户又提出来如果在浏览其他网站的时候、或者浏览器最小化的时候 我怎么知道是否有新消息呢? 当时认为这就是CS对于BS而言的优势所在。当然问题一直都没有得到改善 直到最近在W3C上看到http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html
http://www.w3.org/TR/notifications/
这篇文章时候、很有自信的说 这种问题已经可以解决了。遗憾的是已经离开了那一家公司。
Notation被W3C
提出是浏览器通知的一个标准,最初的草案叫做webkitNotifications
在网上说Notation
是未来的标准化,目前还有很多浏览器厂商不支持这个标准。根据测试和网上所知 目前只有Chrome
、Opera
支持,相信很快其他浏览器也会被支持,因为真的很有用。比如像人人网、微信网页版 都使用了这种技术,给用户带来了极高的体验。
在chrome console所知 notification拥有一个构造函数 具备以下的一些属性和方法
Notification {icon: "", tag: "", body: "I'm an enginneer!", lang: "", dir: "auto"…} |
构造函数一共有2个参数 一个是title 另一个则是配置项 如下
属性 | 含义 | 默认值 |
---|---|---|
dir | 未知 | auto |
lang | 应该是国际化用的 | null |
body | 通知内容 | null |
tag | 标记/ID | null |
icon | 图标 异常显示 | null |
Permission查看权限值
Notification.permission |
permission
是一个静态属性 这个属性比较特殊是不可以手动去修改值的,只能用户通过授权提示来控制,他的值一共有3个如下
- default 拒绝
- denied 用户不需要通知功能
- granted 启动通知了
要使用通知 必须要得到用户的授权后才可以使用,使用Notification.requestPermission()
向用户请求通知授权 会出现一个是否确认授权的确认框,已经启动通知了将被忽略。
new Notification('notifi',{body:'这是一个优雅的提醒',icon:'http://blog.peachyy.com/public/images/logo.png'}); |
执行代码后 会在右下角弹出一个浏览器级别的通知框
demo地址:https://demohubs.github.io/frontendLab/notification.html