微博、网易邮箱、网页微信都有桌面推送的功能,通过Web Notifications就可以轻松实现。
兼容性:
除了IE外,各大现代浏览器都对这个桌面推送有了基本的支持。
在移动端浏览器方面,可能因为平台的权限限制的原因目前只有firefox积极地支持这个属性。
样例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| if (window.Notification) { var ua = navigator.userAgent.toLowerCase(); if (ua.indexOf('safari') != -1) { if (ua.indexOf('chrome') > -1) { Notification.requestPermission().then(function(permission) { if (permission == "granted") { var notification = new Notification('桌面推送', { body: '这是我的第一条桌面推送', icon: 'some/icon/url' }); notification.onclick = function() { console.log('点击'); notification.close(); }; } else { Notification.requestPermission(); console.log('没有权限,用户拒绝:Notification'); } }); } else { Notification.requestPermission(function(permission) { if (permission == "granted") { var notification = new Notification('桌面推送', { body: '这是我的第一条桌面推送', icon: 'some/icon/url' }); notification.onclick = function() { console.log('点击'); notification.close(); }; } else { Notification.requestPermission(); console.log('没有权限,用户拒绝:Notification'); } }); } } } else { console.log('不支持Notification'); }
|
说明:
Notification.requestPermission() 向用户申请权限函数,可以使用promise语法,也可以使用传统回调方式。
Notification.permission属性有三个值:default、granted和denied。当且仅当值为default时可以调用申请权限函数向用户申请权限。
权限申请成功后,桌面消息推送实例创建:
1 2 3 4 5
| new Notification('title', { body: '这是我的第一条桌面推送', icon: 'some/icon/url', sound :'...' });
|
实例的相关事件:Notification.onclick、Notification.onerror、Notification.onclose、Notification.onshow。
手动设置权限
chrome用户请在 “设置->隐私设置->内容设置->通知”选择网站域名点击允许
其他浏览器类似,请自己google