首頁 >web前端 >js教程 >怎麼讓用戶收到瀏覽器的訊息提醒?

怎麼讓用戶收到瀏覽器的訊息提醒?

零下一度
零下一度原創
2017-06-26 11:46:363714瀏覽

如何讓使用者在瀏覽器最小化的狀態下也能及時的收到訊息提醒呢? 這個問題作為webRd是要正面面對的. 大約可分兩種場景:一種是類似桌面通知的形式還有一種是類似QQ提醒(在系統任務欄閃爍隨後高亮);接下來分別研究下:

桌面提醒:

這個H5有個強大的API沒錯就是Notification, 沒聽過?先去了解下,很詳細;瀏覽器不同對其支援程度也不同,簡單講就是有相容問題,而筆者要說的就是基於Notification的一款小類庫 ,其支援:IE9+、Safari6、Firefox、Chrome ;好吧都是前輩的結晶,我就是個搬磚的,下面附一個簡單的小demo:

ps: 麼有用類庫, 就是練手用的..實際還是用類庫吧;

<br>
function _Notification(title,option){
    var Notification = window.Notification || window.mozNotification || window.webkitNotification;
    Notification.permission === "granted"?creatNotification(title, option):requestPermission(title, option);
    function creatNotification(title, option){
       var instance = new Notification(title, option);
        instance.onclick = function () {
            console.log('onclick');
        };
        instance.onerror = function () {
            console.log('onerror');
        };
        instance.onshow = function () {
            console.log('onshow');
        };
        instance.onclose = function () {
            console.log("close")
        }
    }
    function requestPermission(title, option){
        Notification.requestPermission(function(status) {
            status === "granted"?creatNotification(title, option):failNotification(title);
        });
    }
    function failNotification(title){
        var timer;
        return function(timer){
            var index = 0;
            clearInterval(timer);
            timer = setInterval(function() {
                if(index%2) {
                    document.head.getElementsByTagName("title")[0].innerHTML = '【   】'+ title;
                }else {
                    document.head.getElementsByTagName("title")[0].innerHTML = '【新消息】'+ title;
                }
                index++;
                if(index > 20) {
                    clearInterval(timer);
                }
            }, 500);
        }(timer);
    }
}
 <br>

任務欄提醒:

這個還真是個問題; 至於解決的終極方法目前筆者還沒研究明白;不過window.open 這種彈窗會觸發閃爍提醒, 但需要解決使用者禁止彈窗的情況,可以模擬from提交|| 超連結(a) || 利用瀏覽器冒泡;這幾種方法都可以解決大部分被攔截的情況; 可這都不是筆者想要的;因為提示內容展示在彈窗中總是不好的,用戶很容易蒙圈,怎麼一有提示就多個標題欄呢...很煩,貌似內存溢出也可以,不過這個就算了,除非腦進水了...; 期待大神指點..;

以上是怎麼讓用戶收到瀏覽器的訊息提醒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn