HTML5中的Web Notification桌面通知


大家在做一些瀏覽器端的聊天功能的時候,或者在一些網站跟在線客服咨詢的時候,會看到一些消息通知的提示,常見的有瀏覽器標簽頁的閃爍和屏幕右側的消息通知。本篇博客就在這里簡單的介紹一下如何實現這樣的功能。

 需要購買阿里雲產品和服務的,點擊此鏈接領取優惠券紅包,優惠購買哦,領取后一個月內有效: https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=fp9ccf07 

1、實現標簽頁閃爍效果

實現的效果:

  當前窗體失焦的時候,標題開始閃動,當前窗體獲取焦點的時候,則停止閃動。

 

  注意:這里需要用到窗口的獲取焦點和失去焦點的方法,由於IE和其他Chrome及FireFox的區別,這里需要用到的方法就不一樣,具體是:

  Chrome和FireFox瀏覽器是window的onfocus, onblur方法;而IE瀏覽器則是document的onfocusin, onfocusout方法

 

下面是代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>標簽頁標題閃爍</title>
</head>
<body>
<h2>瀏覽器窗體獲得焦點則停止標題閃爍通知+失去焦點則開啟標題閃爍通知</h2>
<script>
//    窗體失焦的時候,標題就會閃。
//    這里有一個小的知識點,就是瀏覽器窗體獲得焦點和失去焦點,Chrome和FireFox瀏覽器是window的onfocus, onblur方法;而IE瀏覽器則是document的onfocusin, onfocusout方法,因此有:
    var titleInit = document.title, isShine = true;
    setInterval(function() {
        var title = document.title;
        if (isShine == true) {
            if (//.test(title) == false) {
                document.title = '【你有新消息】';
            } else {
                document.title = '【     】';
            }
        } else {
            document.title = titleInit;
        }
    }, 500);

    // for Chrome and FireFox
    window.onfocus = function() {
        console.log(123);
        isShine = false;
    };
    window.onblur = function() {
        isShine = true;
    };

    // for IE
    document.onfocusin = function() {
        isShine = false;
    };
    document.onfocusout = function() {
        isShine = true;
    };
</script>
</body>
</html>

 

在瀏覽器打開該頁面,再隨意打開其他一個標簽頁,測試效果如下:

 

2、實現屏幕右側消息通知

先直接貼出代碼吧

test2.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>測試消息通知</h2>
<script> window.onload = function () { suportNotify() } //判斷瀏覽器是否支持Web Notifications API function suportNotify(){ if (window.Notification) { // 支持 console.log("支持"+"Web Notifications API"); //如果支持Web Notifications API,再判斷瀏覽器是否支持彈出實例 showMess() } else { // 不支持 alert("不支持 Web Notifications API"); } } //判斷瀏覽器是否支持彈出實例 function showMess(){ setTimeout(function () { console.log('1:'+Notification.permission); //如果支持window.Notification 並且 許可不是拒絕狀態 if(window.Notification && Notification.permission !== "denied") { //Notification.requestPermission這是一個靜態方法,作用就是讓瀏覽器出現是否允許通知的提示 Notification.requestPermission(function(status) { console.log('2: '+status); //如果狀態是同意 if (status === "granted") { var m = new Notification('收到信息', { body: '這里是通知內容!你想看什么客官?',  //消息體內容 icon:"images/img1.jpg"  //消息圖片 }); m.onclick = function () {//點擊當前消息提示框后,跳轉到當前頁面 window.focus(); } } else{ alert('當前瀏覽器不支持彈出消息') } }); } },1000) } </script> </body> </html>

Notification.requestPermission這是一個靜態方法,作用就是讓瀏覽器出現是否允許通知的提示,在mac下,如圖所示:

 

點擊了允許后,則當前域名的網站就被允許在該電腦上出現通知彈框,以谷歌瀏覽器為例,這時依次點擊:設置——高級——內容設置——通知,就可以在允許下面看到剛才點擊了允許通知的站點的地址,如圖:

 

此時,localhost:63342站點就可以出現通知消息了(消息通知彈窗在Mac和windows兩個系統下可能出現的位置有些不一樣,自己設置的logo出現的位置也會有些不同),Mac的消息通知窗口是從屏幕右上角出來的(Windows應該是從右下角出來),效果如圖:

 

 

此時,只要當前頁面沒有關閉,不管你當前瀏覽的是其他頁面還是其他應用,有消息通知時,屏幕右側都會出現消息通知的彈框,點擊消息提示框,這會跳轉到消息頁面。

 

注意:如果用的是Chrome瀏覽器的新版本,則必須是https協議,消息通知方可有效(當然如果是自己做測試,在本機用本地ip,則無所謂http還是https),chrome的舊版本則沒有這一限制(具體到哪個版本為界限,就不清楚)

 

本篇博客也只是簡單的記錄一下如何實現這樣的消息通知效果,想了解更詳細的知識點,可以參考張鑫旭大神的博客:

http://www.zhangxinxu.com/wordpress/2016/07/know-html5-web-notification/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM