html5桌面通知(Web Notifications)实例解析


Posted in HTML / CSS onJuly 07, 2014

html5桌面通知(Web Notifications)对于需要实现在新消息入线时,有桌面通知效果的情况下非常有用,在此简单介绍一下这个html5的新属性。

这里有个不错的demo:html5 web notification demo

从上面这个demo中 我们就可以获取所需要的基本核心代码,如下:

复制代码
代码如下:
<script>
var Notification = window.Notification || window.mozNotification || window.webkitNotification;

Notification.requestPermission(function (permission) {
// console.log(permission);
});

function show() {
var instance = new Notification(
"test title", {
body: " test message"
}
);

instance.onclick = function () {
// Something to do
};
instance.onerror = function () {
// Something to do
};
instance.onshow = function () {
// Something to do
};
instance.onclose = function () {
// Something to do
};

return false;
}
</script>


 
其中:Notification.requestPermission 这句代码的功能就是向用户请求权限允许

通过以上的例子,基本思路我们已经有了,首先加载文档时,就向用户请求权限,获取权限后以后都so easy了。

复制代码
代码如下:
window.addEventListener('load', function () {
// At first, let's check if we have permission for notification
if (Notification && Notification.permission !== "granted") {
Notification.requestPermission(function (status) {
if (Notification.permission !== status) {
Notification.permission = status;
}
});
}
});

火狐下 验证是通过的,但是在chrome下总是出不来,后来发现这样一段话

复制代码
代码如下:
Not a Bug, Feature.

Desktop Notifications can only be triggered via a user action. Typing into the
JavaScript console has the same effect as raw javascript code embedded into the web
page (no user action). Typing the javascript into the location bar, however,
represents a user-action (the user is intentionally visiting a javascript link to
enable notifications, probably for sites that tend to use href="javascript:" instead
of onclick="".

I'm pretty sure this is a non-issue.

原来在chrome下是必须要用户手动触发的,否则,chrome浏览器会无视这段的js

但是在我们网站里肯定不可能加一个按钮或者超链接来显式的让用户授权吧,好吧, 实际上这也不是个事情,我们可以在用户经常点的按钮上顺便处理下这个授权就好,在chrome下是一次授权终身有用。除非你进入设置把他禁了。

整合一下,代码如下:

复制代码
代码如下:
function showMsgNotification(title, msg){
var Notification = window.Notification || window.mozNotification || window.webkitNotification;

if (Notification && Notification.permission === "granted") {
var instance = new Notification(
title, {
body: msg,
icon: "image_url"
}
);

instance.onclick = function () {
// Something to do
};
instance.onerror = function () {
// Something to do
};
instance.onshow = function () {
// Something to do
// console.log(instance.close);
setTimeout(instance.close, 3000);
};
instance.onclose = function () {
// Something to do
};
}else if (Notification && Notification.permission !== "denied") {
Notification.requestPermission(function (status) {
if (Notification.permission !== status) {
Notification.permission = status;
}
// If the user said okay
if (status === "granted") {
var instance = new Notification(
title, {
body: msg,
icon: "image_url"
}
);

instance.onclick = function () {
// Something to do
};
instance.onerror = function () {
// Something to do
};
instance.onshow = function () {
// Something to do
setTimeout(instance.close, 3000);
};
instance.onclose = function () {
// Something to do
};

}else {
return false
}
});
}else{
return false;
}

}

HTML / CSS 相关文章推荐
全面解析CSS Media媒体查询使用操作(推荐)
Aug 15 HTML / CSS
CSS3 滤镜 webkit-filter详细介绍及使用方法
Dec 27 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
Oct 19 HTML / CSS
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
Dec 29 HTML / CSS
HTML5 Canvas 起步(2) - 路径
May 12 HTML / CSS
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
Apr 24 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
Nov 05 HTML / CSS
HTML5 audio标签使用js进行播放控制实例
Apr 24 HTML / CSS
html5 canvas绘制矩形和圆形的实例代码
Jun 16 HTML / CSS
详解html5 postMessage解决跨域通信的问题
Aug 17 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
详解CSS中的特指度和层叠问题
Jul 15 HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 #HTML / CSS
HTML5新增的表单元素和属性实例解析
Jul 07 #HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
Jul 07 #HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
Jul 02 #HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
Jun 30 #HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
Jun 23 #HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
Jun 23 #HTML / CSS
You might like
教你如何把一篇文章按要求分段
2006/10/09 PHP
php生成缩略图的类代码
2008/10/02 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
Thinkphp页面跳转设置跳转等待时间的操作
2019/10/16 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
javascript版2048小游戏
2015/03/18 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
vue+Element-ui实现分页效果
2020/11/15 Javascript
Python中装饰器的一个妙用
2015/02/08 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
分分钟入门python语言
2018/03/20 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
小学教师师德师风演讲稿
2014/08/22 职场文书
个人工作能力自我评价
2015/03/05 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis