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>

<a href="#" onclick="return show()">Notify me!</a>

其中: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;
	  }

}

html5 Web Notifications,布布扣,bubuko.com

时间: 2024-12-27 15:59:57

html5 Web Notifications的相关文章

Web Notifications

用过QQ.Gtalk之类的同学,应该都被它的消息提醒所骚扰过.其实这里就要谈谈这玩意,对于桌面应用程序来说,这应该算不了什么大不了的:不过这相同的技术移植到另一个平台上,如Web应用上来说,就没那么简单了,这么W3C还没把它定案呢,各大浏览器商也支持不一. 今天正好手头没项目,就试玩了下Web Notifications:对,就是传说中的Web通知也可以简单说成消息提醒,就它的表现形式在W3C定义来说还是相当丰富的.下面我们就先来简单了解下官方的资料说明(以下资料大多翻译自W3C或浏览器官方网站

HTML5移动开发之路(20)——HTML5 Web SQL Database

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(20)--HTML5 Web SQL Database 一.Web Database介绍 WebSQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流浏览器都已经支持WebSQL Database WebSQL数据库有三个核心方法: 1)打开数据库openDatabase()方法: 此方法创建数

Html5 Web App 手机跨平台开发笔记

APP 开发平台包括Android 平台开发,Mac os X 平台开发以及Windows Phone 7平台开发.开发的程序都只能在各自手机系统上运行,如果开发出一种程序,能再以上任何系统上运行,那是多么美好的事情.而Html5 Mobile Web App就是其中一种跨平台方法.下面是相关知识的介绍 1.背景 HTML5是HTML的最新标准,HTML5的草案已经于2008年发布,目前W 3 C(万维网联盟)正在对此进行进一步完善.对许多人来说,早该进行这种改进了.十多年来,HTML一直没有进

HTML5 Web Workers

HTML5 web workers是运行在后台的JavaScript,不会影响页面的性能. 什么是web worker? 当在HTML页面中执行脚本时,页面的状态是不可响应的,直到脚本运行完成. 而在HTML5 中的web worker是运行在后台的JavaScript,独立于其它的脚本,不会影响页面的性能.您可以继续做任何其它愿意做的事件,如:点击,选择内容等等, 而此时web worker是在后台运行的,所以不会影响页面的性能. 实例: <!DOCTYPE html><html>

atitit.D&amp;D drag&amp;drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结

atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结 1. DND的操作流程 1 2. Html5 注解事件 document.dragover >>preventDefault 1 3. 代码(js) 1 4. C++ 实现拖曳 2 5. QT拖拽功能简介 - pcsuite的专栏 - 博客频道 - CSDN.NET.htm 2 1. DND的操作流程 Dragenter 事件::更改提示的颜色

深入 HTML5 Web Worker 应用实践:多线程编程

深入 HTML5 Web Worker 应用实践:多线程编程 HTML5 中工作线程(Web Worker)简介 至 2008 年 W3C 制定出第一个 HTML5 草案开始,HTML5 承载了越来越多崭新的特性和功能.它不但强化了 Web 系统或网页的表现性能,而且还增加了对本地数据库等 Web 应用功能的支持.其中,最重要的一个便是对多线程的支持.在 HTML5 中提出了工作线程(Web Worker)的概念,并且规范出 Web Worker 的三大主要特征:能够长时间运行(响应),理想的启

HTML5 Web存储(Web Storage)技术及用法

在如今的Web开发中,HTML5是大家讨论的最大一个话题.HTML5提供的新功能特征使得Web程序员如虎添翼,并免去了以往钻研各种方法来让网站更好.更快.更灵活的气力.这些新功能中有一个非常让我感兴趣,它就是Web存储(Web Storage).Web存储(Web Storage)提供了一个在浏览器端保存用户会话信息的方法.下面让我们来看一看Web存储(Web Storage)的基本用法! Web存储(Web Storage)基本要领 存储的数据可以是任何类JSON的结构化数据. 存储的数据不会

四种途径将HTML5 web应用变成android应用

作为下一代的网页语言,HTML5拥有很多让人期待已久的新特性.HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动 设备上使用HTML5技术.随着HTML5跨平台支持的不断增强和智能手机的迅速普,HTML5技术有着非常好的发展前景,甚至有人预言HTML5将引燃 移动平台游戏开发技术的新革命. 越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户

HTML5 Web Storage

前言 本章主要内容是Web Storage与本地数据库,其中Web Storage 是对cookie的优化,本地数据库是HTML5新增的一个功能,使用它可以在客户端建立一个数据库 大大减轻服务器端的负担,加快访问数据速度. 学习本章需要掌握Web Storage基本概念,了解sessionStorage与localStorage的使用与差别 掌握本地数据库的使用 什么是WebStorage? 前面说过,webstorage是对cookie的优化而来,HTML4中使用cookie在客户端存储用户数