需要實時桌面推送的功能,就像平時QQ,微信消息推送那種,這個時候我們就可以用到html5 Web Notification 這個API了。
Notification 彈出一個通知在桌面右下角:
if(!("Notification" in window)) { //alert("This browser does not support desktop notification"); } if(Notification.permission !== 'denied') { //判斷是否授權,沒授權先授權在通知 Notification.requestPermission(function(permission) { // 如果用戶同意,就可以向他們發送通知 if(permission === "granted") { var notice_ = new Notification('通知', { body: '你有一條信息' }); notice_.onclick = function() { //單擊消息提示框,進入瀏覽器頁面 window.focus(); } } }); } if(Notification.permission === 'denied') { //已授權直接通知 Notification.requestPermission(function(permission) { // 如果用戶同意,就可以向他們發送通知 if(permission === "granted") { var notice_ = new Notification('通知', { body: '你有一條信息' }); notice_.onclick = function() { //單擊消息提示框,進入瀏覽器頁面 window.focus(); } } }); }
備注:
1. 谷歌瀏覽器需要是https的網址,不然會提示不安全, 不能修改通知權限,無法實現彈框。
2.如果這段代碼放在html中執行,一定要創建虛擬服務器,即用域名訪問,如:localhost,不能直接用file:index.html 這樣的路徑訪問,因為這個不是http協議,瀏覽器不接受本地文件的通知設置。
3.如果之前沒有為該域名請求權限,則不會有彈窗。選擇【允許】,則可以進行桌面推送。
廣州設計公司https://www.houdianzi.com 我的007辦公資源網站https://www.wode007.com
Notification使用說明:
Notification.permission這是一個靜態屬性,有3個值,default, granted, denied
default表示還沒有發出過請求,或者之前請求過,但是用戶並沒有允許或者禁止,二是直接關閉窗口。這種狀態下是不會有通知的。
granted表示之前向用戶請求過權限,而且用戶已經允許了。
denied表示之前向用戶請求過權限,但是用戶已經拒絕了。
new Notification(title, options),其中title是必須參數,表示推送消息框的標題內容,options是可選參數,下面是一些參數的簡單說明(一些常用的,其他的有興趣的可以自己去了解)
lang:提示的語言
bady:提示消息的主體內容
tag:標記當前通知的標簽 icon:左邊的顯示頭像或者圖標
renotify:是否替換之前的通知項
事件句柄
Notification.onclick 處理 click 事件的處理。每當用戶點擊通知時被觸發。
Notification.onshow 處理 show 事件的處理。當通知顯示的時候被觸發。
Notification.onerror 處理 error 事件的處理。每當通知遇到錯誤時被觸發。
Notification.onclose 處理 close 事件的處理。當用戶關閉通知時被觸發。
兼容性
最后就是該API的兼容性啦,IE就直接被拋棄了 。只能在pc端非ie使用,但是目前市場上IE的使用率也越來越低了。