chrome在很早之前就推出了桌面通知API,chrome自己的API标准可以参考这个链接:http://dev.chromium.org/developers/design-documents/desktop-notifications/api-specification
,同时notification也纳入了W3C的标准,目前还是草案,两者差别在于:W3C仅定义了Notification,chrome标准中则还有NotificationCenter,同时chrome标准中Notification的API没有W3C的完整,但是chrome本身又基本实现了W3C标准的Notification,所以有很多chrome已实现的Notification的API在chrome标准中并未提及,只能通过试探性的尝试摸索。
下面将介绍chrome标准中相关的桌面通知API。涉及到桌面通知的有两个类:NotificationCenter与Notification。 前者是一个工厂类,作用是检查、申请用户授权以及创建Notification实例;后者的功能包括弹出/隐藏桌面通知,以及相关的事件接口。 两者的API如图:
NotificationCenter
在chrome中,NotificationCenter实现为window对象下的webkitNotifications属性。API详细介绍如下:checkPermission: 该函数用于检查权限,返回值有0,1,2, 分别对应允许,不允许,拒绝状态。与HTML5中的geolocation API一样, 桌面通知的启用需要得到用户授权。 不允许是在chrome浏览器的设置中,勾选了“网站尝试显示桌面通知时询问我(推荐)”产生的。而拒绝则是在弹出请求授权的对话框时,用户点击拒绝产生的。requestPermission: 该函数用于请求用户授权使用桌面通知功能,接受一个回调函数作为参数,当用户授权时,该回调函数会被调用,相当于一个入口函数。注意:该函数只能在处理用户行为的函数中来调用,比如click事件监听函数。createNotification: 创建一个文本性质的Notification实例,接受的参数为:iconURL, title, content; iconURL是一个url字符串,定义了通知对话框的图标,title则是通知对话框标题,content是通知对话框的内容。在chrome22下,文本性质的桌面对话框的模样如图:
createHTMLNotification: 用于创建一个HTML性质的Notification实例,接受一个url作为参数,该url指向的html页面将被展示在对话框中。大概的模样如下图,我这里链接是指向了”http://www.163.com”,
注意:createNotification与createHTMLNotification都是需要得到用户的允许或者授权才可以使用,在未授权或者允许的情况下调用,则会抛出一个权限错误。Notification
通过NotificationCenter的create*函数创建了Notification实例后,需要调用通过Notification的show函数才能将对话框展示出来,以下介绍了Notification提供的API:Methods:show:用于显示通知对话框,对话框不一定会立刻就展示,取决于浏览器的实现(如浏览器对通知对话框显示的数量有限制,会做一个队列保存等待展示的通知)。调用时将会触发display事件cancel:该函数使通知不会被展示,若通知已经显示了,则会关闭通知对话框。若通知还处于展示队列中,则会从队列中移除该通知。Events:error: 错误事件,目前来看一般只会接触到权限错误display: 对话框展示时触发close: 当用户关闭对话框,或脚本调用close方法时,触发click: 当用户点击通知对话框时,触发以下是我封装的一个桌面通知对象:https://github.com/Exodia/chrome-ext/blob/master/desktopNotify.js总结
桌面通知API给WEB带来了更多的新鲜元素,让浏览器看起来更像是一个OS。另在chrome,基本已经实现了W3C标准的Notification,而chrome的标准草案确迟迟未更新- -! 本文旨在初识桌面通知,因此介绍的桌面通知API都是按照chrome的标准介绍,难免不够完善,详细的API应参考W3C的标准。
分享到:
相关推荐
Notification生成的消息不依附于某个页面,仅仅依附于浏览器。 下面通过本文给大家介绍HTML5实现Notification API桌面通知功能,需要的朋友参考下吧
Server-Sent Events整合應用2019/5/24 Peter PanServer-Sent EventsServer Side:Server-se
Chrome 通知 将消息推送到 Chrome
ApplicationController def account_deletion_notification # eBay wants an immediate response, so we should postpone the deletion EbayAccountDeletionWorker . perform_async ( params , request . headers ...
如果你在特定版本的浏览器上进行开发,那么我建议你先到 caniuse 查看浏览器对Notification API的支持情况,避免你将宝贵时间浪费在了一个无法使用的API上。如何开始 JavaScript Code复制内容到剪贴板 var ...
一个简单且免费的Java推送通知API,适用于所有受Java SE支持的平台。
该类是针对Instagram Notification API的一种解决方法。 重要说明:这并不是一个安全的API,因为它使用纯文本用户名/密码进行身份验证,并且会将用户会话ID保存在目录“ savedsessions”中(可选)。 我正在构建...
@ react-native-community / push-notification-ios 对iOS的React Native Push Notification API 通知有行动使用TextInput动作入门安装yarn add @react-native-community/push-notification-ios链接React Native v...
js chrome Notification 在windows任务栏上显示消息框
该组件在dom元素中未显示任何内容,但在React.js的生命周期中使用render方法触发HTML5 Web Notification API。演示版安装npm install --save react-web-notification原料药Notification 包装Web通知的React组件。...
esp-ena:使用ESP32上的Exposure Notification API进行Covid-19联系人跟踪
目录这里我们分步解题:第一步:判断API第二步:NotificationChannel第三步:Notification第二个参数代码对比:拓展 这几天做一个小软件在API28(Android 9.0)的模拟器上测试时,发现通知栏无效,经过一番查询,...
在一个项目中,我想使用Web Notification API。 因此,我决定编写一个可用于使用Web Notification的jQuery插件。 HTML5 Notification使用 目前,FireFox和Safari使用的是W3C Notification的当前版本。 Chrome仍在...
Notification最新用法、实现Notification的通知栏常驻、Notification的各种样式big View、解决Notification点击无效
请求正文应为以下形式的 JSON: { " command " : " string " , " data " : " string "} 目前有两个可用的命令: ping - 作为响应,您会得到一个字符串“chrome-notification-server”(可用于确定该服务器是否存在...
Notification
支持的浏览器Firefox 22+(台式机和移动版) Chrome 32+(仅台式机)演示版历史v.2(2014年3月)-使用v.1(2012年3月)-使用旧的Web Notification API规范,现已弃用。 有关详细的变更日志,请检查 。已知问题适用于...
疯狂Android中有关Notification的简单例子
使用javascript 封装实现 Notification 消息通知框