html5 桌面提醒:Notifycations应用介绍
程序员文章站
2023-12-12 14:11:22
HTML5中的桌面提醒(web notifications)可以在当前页面窗口弹出一个消息框,这个消息框是跨Tab 窗口的,这在用户打开多个 tab 浏览网页时,提醒比较方便,容易让用户看到... 12-11-27...
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>
该功能在 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>
推荐阅读
-
html5 桌面提醒:Notifycations应用介绍
-
HTML5本地存储之Database Storage应用介绍
-
HTML5本地存储之Web Storage应用介绍
-
html5 button autofocus 属性介绍及应用
-
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
-
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
-
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
-
HTML5 Notification(桌面提醒)功能使用实例
-
html5 桌面提醒:Notifycations应用介绍
-
html5 button autofocus 属性介绍及应用