html5桌面通知(Web Notifications)实例解析
2015-11-12 11:24
501 查看
通过Web Notifications(桌面通知系统),网站可以在用户桌面弹出一条通知,无论用户是否浏览当前网页,甚至最小化了浏览器,通知均可到达用户桌面。
接口。
这就是notification需要使用到的接口,它有2个方法和相关的4个属性。
Notification 方法
用来显示和隐藏提示框的方法:
Show - 该方法用来显示一个提醒
Cancel - 该方法用来移除提醒,如果提醒当前被现实则会被隐藏,如果还未被显示,则将被阻止显示。
Notification 属性
通知属性用作事件监听器,监听提醒中的不同事件:
ondisplay - 当 notification 被显示时调用
onerror - 当 notification 出现错误时调用
onclose - 当 notification 关闭时调用
onclick - 当提示框被点击时调用
2、NotificationCenter
center 用来创建 notification 对象,并检查当前页面是否有显示该对象的权限。
使用 Notification center 时需要用到4个方法:
createNotification - 如果 notification 有权限被显示,呢么该方法将会创建一个 notification 对象,并为其填充相关的内容。如果页面没有允许 notification ,那么将抛出一个安全异常。
createHTMLNotification - 该方法类似于 createNotification ,若页面有权限显示 notification 它会返回一个相关的对象。该方法使用了一个 URL 参数来加载要显示的 HTML 内容。
checkPermission - 该方法返回该页面使用 notification 的整形权限值。PERMISSION_ALLOWED = 0, PERMISSION_NOT_ALLOWED =
1, 或者 PERMISSION_DENIED = 2
requestPermission - 该方法将向用户请求询问显示提示框的权限。
检查浏览器是否支持 Notification
当你准备用 notification API 做点什么之前,你需要先检查浏览器是否支持,你可以使用一下代码来检查:
获得显示权限
显示一个提醒之前你需要得到用户的允许,获得此权限你需要做的就是使用 requestPermission() 方法:
显示纯文本提示框
创建一个显示纯文本的提示框前你需要检查是否有权限显示。如果有权限我们就能使用createNotification()方法创建一个新的 notification 了,使用 createNotification() 传递图片、标题以及描述信息3参数即可。
?
显示 HTM L 提醒框
在显示之前我们也需要检查显示权限,如果有权限,我们可以使用createHTMLNotification(url) 方法创建,传递的 url 地址即我们要显示的页面。
第一个参数为标题,第二个参数为配置参数,里面包含以下可选参数:
效果图如下(Chrome):
接下来,两秒后,通知将会消失。
Web Notifications API目前在以下浏览器得到了支持:
Firefox 35+
Chrome 31+
Safari 7.1+
Opera 27+
Android Browser 4.4+ (需要加上
详情点击这里
一、Notification API
在 Notification API 中会用到两个对象, notification 对象和NotificationCenter接口。
1、notification 对象
interface Notification : EventTarget { // display methods void show(); void cancel(); // event handler attributes attribute Function ondisplay; attribute Function onerror; attribute Function onclose; attribute Function onclick; }
这就是notification需要使用到的接口,它有2个方法和相关的4个属性。
Notification 方法
用来显示和隐藏提示框的方法:
Show - 该方法用来显示一个提醒
Cancel - 该方法用来移除提醒,如果提醒当前被现实则会被隐藏,如果还未被显示,则将被阻止显示。
Notification 属性
通知属性用作事件监听器,监听提醒中的不同事件:
ondisplay - 当 notification 被显示时调用
onerror - 当 notification 出现错误时调用
onclose - 当 notification 关闭时调用
onclick - 当提示框被点击时调用
2、NotificationCenter
接口
interface NotificationCenter { // Notification factory methods. Notification createNotification(in DOMString iconUrl, in DOMString title, in DOMString body) throws(Exception); optional Notification createHTMLNotification(in DOMString url) throws(Exception); // Permission values const unsigned int PERMISSION_ALLOWED = 0; const unsigned int PERMISSION_NOT_ALLOWED = 1; const unsigned int PERMISSION_DENIED = 2; // Permission methods int checkPermission(); void requestPermission(in Function callback); } interface Window { ... attribute NotificationCenter webkitNotifications; ... }Notification
center 用来创建 notification 对象,并检查当前页面是否有显示该对象的权限。
使用 Notification center 时需要用到4个方法:
createNotification - 如果 notification 有权限被显示,呢么该方法将会创建一个 notification 对象,并为其填充相关的内容。如果页面没有允许 notification ,那么将抛出一个安全异常。
createHTMLNotification - 该方法类似于 createNotification ,若页面有权限显示 notification 它会返回一个相关的对象。该方法使用了一个 URL 参数来加载要显示的 HTML 内容。
checkPermission - 该方法返回该页面使用 notification 的整形权限值。PERMISSION_ALLOWED = 0, PERMISSION_NOT_ALLOWED =
1, 或者 PERMISSION_DENIED = 2
requestPermission - 该方法将向用户请求询问显示提示框的权限。
检查浏览器是否支持 Notification
当你准备用 notification API 做点什么之前,你需要先检查浏览器是否支持,你可以使用一下代码来检查:
获得显示权限
/** * Check if the browser supports notifications * * @return true if browser does support notifications */ function browser_support_notification() { return window.webkitNotifications; }
显示一个提醒之前你需要得到用户的允许,获得此权限你需要做的就是使用 requestPermission() 方法:
显示纯文本提示框
/** * Request notification permissions */ function request_permission() { // 0 means we have permission to display notifications if (window.webkitNotifications.checkPermission() == 0) { window.webkitNotifications.createNotification(); } else { window.webkitNotifications.requestPermission(); } }
创建一个显示纯文本的提示框前你需要检查是否有权限显示。如果有权限我们就能使用createNotification()方法创建一个新的 notification 了,使用 createNotification() 传递图片、标题以及描述信息3参数即可。
?
/** * Create a plain text notification box */ function plain_text_notification(image, title, content) { if (window.webkitNotifications.checkPermission() == 0) { return window.webkitNotifications.createNotification(image, title, content); } }
显示 HTM L 提醒框
在显示之前我们也需要检查显示权限,如果有权限,我们可以使用createHTMLNotification(url) 方法创建,传递的 url 地址即我们要显示的页面。
/** * Create a notification box with html inside */ function html_notification(url) { if (window.webkitNotifications.checkPermission() == 0) { return window.webkitNotifications.createHTMLNotification(url); } }
二、完整案例
接下来上一个完整的案例<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Notifications API</title> </head> <body> <input id="fire" type="button" value="fire Notification"> <script> var btn = document.getElementById("fire"); if(window.Notification && Notification.permission !== "denied") { Notification.requestPermission(function(status) { if(status === 'granted') { //弹出一个通知 btn.addEventListener('click', function() { var n = new Notification('Title', {//标题 body : 'I am a Notification' //显示内容 //以下是可选参数 //icon : //lang : //onclick: //onclose: //onerror: //onshow: //tag: }); //两秒后关闭通知 setTimeout(function() { n.close(); }, 2000); }); } }); } </script> </body> </html>首先,我们需要判断浏览器是否支持Notification。如果通过
Notification.requestPermission向用户请求权限,这时浏览器会弹出一个是否允许显示通知的提示;如果用户选择了“允许”,那么返回的
status将会是
granted。这个时候我们就可以通过
Notification()来创建实例了:
new Notification('Title', { body : 'I am a Notification', icon : './images/test1.png' })
第一个参数为标题,第二个参数为配置参数,里面包含以下可选参数:
效果图如下(Chrome):
接下来,两秒后,通知将会消失。
兼容性
Web Notifications API目前在以下浏览器得到了支持:Firefox 35+
Chrome 31+
Safari 7.1+
Opera 27+
Android Browser 4.4+ (需要加上
webkit前缀)
详情点击这里
相关文章推荐
- ajax与HTML5 history pushState/replaceState实例
- 活动h5页面倒计时效果
- 使用h5做上传图片的即时显示
- HTML5笔记T0000001:HTML5三大类元素--元数据元素
- HTML5的CANVAS绘制线条,MOVETO和LINETO详解
- HTML5
- 五个2015 年最佳HTML5 框架
- 使用html5 canvas 画时钟代码实例分享
- HTML5 乱记
- html5手机 input file 上传图片 调用API
- H5地理定位
- cdh5.4.7 sqoop使用
- Html5_移动前端不得不了解的html5 head 头标签
- html5视频播放解决方案
- HTML5上传图片预览
- HTML5 Web Worker深入浅出教程
- html5 hash
- HTML5中custom data-*特性与asp.net mvc 3 表单验证
- html5
- 基于HTML5树组件延迟加载技术实现