html5 桌面提醒:Notifycations应用介绍


Posted in HTML / CSS onNovember 27, 2012

HTML5中的桌面提醒(web notifications)可以在当前页面窗口弹出一个消息框,这个消息框是跨 Tab 窗口的,这在用户打开多个 tab 浏览网页时,提醒比较方便,容易让用户看到。目前只要是 webkit 内核支持该功能。
该功能在 chrome 下需要以 http 方式打开网页才能启用。
桌面提醒功能由 window.webkitNotifications 对象实现(webkit内核)。
window.webkitNotifications 对象没有属性,有四个方法:
1.requestPermission()

该方法用于向用户申请消息提醒权限,如果当前没有开放该权限,浏览器将弹出授权界面,用户授权后,在对象内部产生一个状态值(一个0、1或 2 的整数):
0:表示用户同意消息提醒,只在该状态下可以使用信息提醒功能;
1:表示默认状态,用户既未拒绝,也未同意;
2:表示用户拒绝消息提醒。
2.checkPermission()

这个方法用于获取 requestPermission() 申请到的权限的状态值。
3.createNotification()

这个方法以纯消息的方式创建提醒消息,它接受三个字符串参数:
iconURL:在消息中显示的图标地址,
title:消息的标题,
body:消息主体文本内容
该方法会返回一个 Notification对象,可以针对这个对象做更多的设置。
Notification 对象的属性与方法:

复制代码
代码如下:

dir: ""
onclick: null
onclose: null
ondisplay: function (event) {
onerror: null
onshow: null
replaceId: ""
tag: ""
__proto__: Notification
addEventListener: function addEventListener() { [native code] }
cancel: function cancel() { [native code] }
close: function close() { [native code] }
constructor: function Notification() { [native code] }
dispatchEvent: function dispatchEvent() { [native code] }
removeEventListener: function removeEventListener() { [native code] }
show: function show() { [native code] }
__proto__: Object

dir:设置消息的排列方向,可取值为“auto”(自动), “ltr”(left to right), “rtl”(right to left)。

tag:为消息添加标签名。如果设置此属性,当有新消息提醒时,标签相同的消息只显示在同一个消息框,后一个消息框会替换先前一个,否则出现多个消息提示框,但是最多值显示3个消息框,超过3个,后继消息通知会被阻塞。

onshow:当消息框显示的时候触发该事件;

onclick: 当点击消息框的时候触发该事件;

onclose:当消息关闭的时候触发该事件;

onerror:当出现错误的时候触发该事件;
方法:

addEventListener && removeEventListener:常规的添加和移除事件方法;

show:显示消息提醒框;

close:关闭消息提醒框;

cancel:关闭消息提醒框,和 close一样;
4.createHTMLNotification()

该方法与 createNotification() 不同的是,他以HTML方式创建消息,接受一个参数: HTML 文件的URL,该方法同样返回 Notification对象。
一个实例:

复制代码
代码如下:

<!DOCTYPE HTML>
<html>
<head>
<title>notifications in HTML5</title>
</head>
<body>
<form>
<input id="trynotification" type="button" value="Send notification" />
</form>
<script type="text/javascript">
document.getElementById("trynotification").onclick = function(){
notify(Math.random());
};
function notify(tab) {
if (!window.webkitNotifications) {
return false;
}
var permission = window.webkitNotifications.checkPermission();
if(permission!=0){
window.webkitNotifications.requestPermission();
var requestTime = new Date();
var waitTime = 5000;
var checkPerMiniSec = 100;
setTimeout(function(){
permission = window.webkitNotifications.checkPermission();
if(permission==0){
createNotification(tab);
}else if(new Date()-requestTime<waitTime){
setTimeout(arguments.callee,checkPerMiniSec);
}
},checkPerMiniSec);
}else if(permission==0){
createNotification(tab);
}
}
function createNotification(tab){
var showSec = 10000;
var icon = "http://tech.baidu.com/resource/img/logo_news_137_46.png";
var title = "[" + new Date().toLocaleTimeString() + "] close after " + (showSec/1000) + " seconds";
var body = "hello world, i am webkitNotifications informations";
var popup = window.webkitNotifications.createNotification(icon, title, body);
popup.tag = tab;
popup.ondisplay = function(event) {
setTimeout(function() {
event.currentTarget.cancel();
}, showSec);
}
popup.show();
}
</script>
</body>
</html>
HTML / CSS 相关文章推荐
css动画效果之animation的常用样式
Mar 09 HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
Dec 18 HTML / CSS
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
May 07 HTML / CSS
利用CSS3实现圆角的outline效果的教程
Jun 05 HTML / CSS
使用CSS3实现字体颜色渐变的实现
Aug 10 HTML / CSS
HTML5 与 XHTML2
Oct 17 HTML / CSS
Html5实现如何在两个div元素之间拖放图像
Mar 29 HTML / CSS
HTML5中新标签和常用标签详解
Mar 07 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
Feb 19 HTML / CSS
canvas与html5实现视频截图功能示例
Dec 15 HTML / CSS
Html5页面中的返回实现的方法
Feb 26 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
Aug 19 HTML / CSS
html5 canvas 画图教程案例分析
Nov 23 #HTML / CSS
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
Nov 22 #HTML / CSS
input file上传文件样式支持html5的浏览器解决方案
Nov 14 #HTML / CSS
免费获得微软MCSD证书赶快行动吧!
Nov 13 #HTML / CSS
Bootstrap 学习分享
Nov 12 #HTML / CSS
HTML5实践-图片设置成灰度图
Nov 12 #HTML / CSS
使用css如何制作时间ICON方法实践
Nov 12 #HTML / CSS
You might like
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
Node.js中console.log()输出彩色字体的方法示例
2019/12/01 Javascript
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python生成不重复随机值的方法
2015/05/11 Python
Python变量赋值的秘密分享
2018/04/03 Python
Django如何配置mysql数据库
2018/05/04 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
30年同学聚会感言
2014/01/30 职场文书
教师远程培训感言
2014/03/06 职场文书
文明倡议书范文
2014/04/15 职场文书
企业趣味活动方案
2014/08/21 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
长城英文导游词
2015/01/30 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
分享3个非常实用的 Python 模块
2022/03/03 Python