瀏覽器桌面通知Notification探究


  首先說明,這篇博文不是科普講解的,而是立flag研究的,是關於瀏覽器消息自動推送,就是下面這個玩意:

  最近常常在瀏覽器看到這樣的消息推送,還有QQ.com的推送,現在我對這個不了解,不知道叫消息自動推送對不對,這個時chrome瀏覽器的截圖,出現在右下角,其他瀏覽器的樣式可能有些微差別。

websocket通信?瀏覽器廣告推送?html5自動更新?靈異事件?

 

----------------------------我是研究的結果華麗的分割線-------------------------------

  先說下websocket吧,WebSocket 規范是 HTML 5 中的一個重要組成部分,已經被很多主流瀏覽器所支持,也有不少基於 WebSocket 開發的應用。正如名稱所表示的一樣,WebSocket 使用的是套接字連接,基於 TCP 協議,可用於任意的客戶端和服務器程序。WebSocket目前由W3C進行標准化。WebSocket已經受到Firefox 4、Chrome 4、Opera 10.70以及Safari 5等瀏覽器的支持,主要用於s/c的數據通信,但以上的例子不是雙向通信,而是單項消息推送,客戶端只接收消息提示並查看就行了,接下來我在瀏覽器里找了下,發現了這個:

  內容設置-通知-例外管理,發現了消息通知的的來源,是各大網站的設定的端口號,可知其工作原理是服務器端設置好通知服務,在特定時間向客戶端推送相關內容,並且此時用戶不一定在瀏覽當前推送網址的來源網頁,只要開着瀏覽器並且沒用禁止網站消息通知就可以接收通知,所以相對於以前網頁右下方彈出div的提醒方式,這種方式顯得比較高大上;

  后來在查閱相關資料的時候發現了瀏覽器桌面通知這個功能,也就是Desktop Notification這個啦,基本的回調方式是這樣的

  

Notification.requestPermission(callback);

  比如運行這個瀏覽器就會提示:

  其工作流程大致是檢測用戶是否同意執行,這個方法用於向用戶請求獲得消息提醒的權限,調用這個方法將產生如下效果,分別對應着3中狀態:“granted”(狀態值:0)表示用戶同意消息提醒;“default”(狀態值:1)表示默認狀態,用戶既未拒絕,也未同意;“denied”(狀態值:1)表示用戶拒絕消息提醒。只有在狀態值為0的時候才能夠允許消息提醒,這個值保存在一個內部變量中,並且是只讀的,通過checkPermission()方法可以提取到這個狀態值:

  然后如果用戶同意執行有權限推送通知了,就可以配置推送消息給瀏覽器了,看起來很高端的樣子。通過new構造,顯示通知。

  推送方法:new Notification(title, options),其中title是必須參數,表示通知小框框的標題內容,options是可選參數,下面是一些參數的簡單說明(實際內容有很長,有興趣的小伙伴可以看下html5api說明)

  lang:提示的語言,這個沒啥用吧

  bady:提示消息的主體內容。會在標題的下面顯示

  tag:標記當前通知的標簽

  icon:就是提示的時候顯示的圖標啦

  renotify:是否替換之前的通知項

  下面是一個小小驗證,小伙伴們可以嘗試下,這里頁面上不讓運行js,(果然沒有獨立域名獨立服務器的博客權限爽啊)就貼一段代碼吧,大家一看就明白:

   function showNotice() {    
       Notification.requestPermission(function (perm) {   
           if (perm == "granted") {   
               var notification = new Notification("這是一個通知撒:", {   
                   dir: "auto",   
                   lang: "hi",   
                   tag: "testTag",   
                   icon: "https://static.cnblogs.com/images/adminlogo.gif",   
                   body: "通知content"   
               });   
           }   
       })   
   }   

  運行這段代碼,在瀏覽器上就會出現,當然前提是瀏覽支持這玩意:

  

  瀏覽器支持情況:

  

  呵呵噠,只能在pc端非ie使用,看情況啦,所以微軟操作系統做這么牛,占有率這么高,為何內置的瀏覽器這么...

  好啦,辛苦一番算是把這個問題弄明白了,再也不用懷疑有靈異事件了

 

  以上結果如有紕漏歡迎各位小伙伴指正!

 

  原文地址:瀏覽器桌面通知Notification探究薛陳磊 | Share the world


免責聲明!

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



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