麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

HTML5中的Web Notification桌面通知功能的實現(xiàn)方法

2024-08-26 00:21:37
字體:
供稿:網(wǎng)友

有的時候我們會在桌面右下角看到這樣的提示:

HTML5,Web,Notification,桌面通知

這種桌面提示是HTML5新增的 Web Push Notifications 技術(shù)。

Web Notifications 技術(shù)使頁面可以發(fā)出通知,通知將被顯示在頁面之外的系統(tǒng)層面上。能夠為用戶提供更好的體驗,即使用戶忙于其他工作時也可以收到來自頁面的消息通知,例如一個新郵件的提醒,或者一個在線聊天室收到的消息提醒等等。

PS:除了IE外,各大現(xiàn)代瀏覽器都對這個桌面推送有了基本的支持。

開始

要創(chuàng)建一個消息通知,非常簡單,直接使用 window 對象下面的 Notification 類即可,代碼如下:

var n = new Notification("桌面推送", {    icon: 'img/icon.png',    body: '這是我的第一條桌面通知。',    image:'img/1.jpg'});

于是你就會看到系統(tǒng)桌面彈出我上面那張截圖的通知。

PS:消息通知只有通過 Web服務訪問 該頁面時才會生效,如果直接雙擊打開本地文件,是沒有任何效果的。也就是說你的文件需要使用服務器的形式打開,而不是直接使用瀏覽器打開本地文件。

當然也有可能你什么都沒看到,別著急繼續(xù)往下看。

基本語法

當然在想要彈出上面通知之前,有必要了解一下一個通知的基本語法:

let myNotification = new Notification(title, options);

title :定義一個通知的標題,當它被觸發(fā)時,它將顯示在通知窗口的頂部。

options (可選)對象包含應用于通知的任何自定義設置選項。

常用的選項有:

body: 通知的正文,將顯示在標題下方。

tag: 類似每個通知的ID,以便在必要的時候?qū)νㄖM行刷新、替換或移除。

icon: 顯示通知的圖標

image: 在通知正文中顯示的圖像的URL。

data: 您想要與通知相關(guān)聯(lián)的任意數(shù)據(jù)。這可以是任何數(shù)據(jù)類型。

renotify: 一個 Boolean 指定在新通知替換舊通知后是否應通知用戶。默認值為false,這意味著它們不會被通知。

requireInteraction: 表示通知應保持有效,直到用戶點擊或關(guān)閉它,而不是自動關(guān)閉。默認值為false。

當這段代碼執(zhí)行時,瀏覽器會詢問用戶,是否允許該站點顯示消息通知,如下圖所示:

HTML5,Web,Notification,桌面通知

只有用戶點擊了 允許 ,授權(quán)了通知,通知才會被顯示出來。

授權(quán)

如何獲取到用戶點擊的是“允許”還是“阻止”呢?

window的 Notification實例有一個 requestPermission 函數(shù)用來獲取用戶的授權(quán)狀態(tài):

// 首先,我們檢查是否具有權(quán)限顯示通知  // 如果沒有,我們就申請權(quán)限  if (window.Notification && Notification.permission !== "granted") {      Notification.requestPermission(function (status) {      //status是授權(quán)狀態(tài)。      //如果用戶點擊的允許,則status為'granted'      // 如果用戶點擊的禁止,則status為'denied'           // 這將使我們能在 Chrome/Safari 中使用 Notification.permission      if (Notification.permission !== status) {        Notification.permission = status;      }    });  }

注意:如果用戶點擊了授權(quán)右上角的關(guān)閉按鈕,則status的值為default。

之后,我們只需要判斷 status 的值是否為 granted ,來決定是否顯示通知。

通知事件

但是單純的顯示一個消息框是沒有任何吸引力的,所以消息通知應該具有一定的交互性,在顯示消息的前前后后都應該有事件的參與。

Notification一開始就制定好了一系列事件函數(shù),開發(fā)者可以很方面的使用這些函數(shù)處理用戶交互:

有: onshow , onclick , onerror , onclose 。

var n = new Notification("桌面推送", {    icon: 'img/icon.png',    body: '這是我的第一條桌面通知。'});//onshow函數(shù)在消息框顯示時觸發(fā)//可以做一些數(shù)據(jù)記錄及定時關(guān)閉消息框等n.onshow = function() {    console.log('顯示消息框');    //5秒后關(guān)閉消息框    setTimeout(function() {        n.close();    }, 3000);};//消息框被點擊時被調(diào)用//可以打開相關(guān)的視圖,同時關(guān)閉該消息框等操作n.onclick = function() {    console.log('點擊消息框');    // 打開相關(guān)的視圖    n.close();};//當有錯誤發(fā)生時會onerror函數(shù)會被調(diào)用//如果沒有g(shù)ranted授權(quán),創(chuàng)建Notification對象實例時,也會執(zhí)行onerror函數(shù)n.onerror = function() {    console.log('消息框錯誤');    // 做些其他的事};//一個消息框關(guān)閉時onclose函數(shù)會被調(diào)用n.onclose = function() {    console.log('關(guān)閉消息框');    //做些其他的事};

 

一個簡單的例子

<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8" />    <title>Document</title>  </head>  <body>    <button>點擊發(fā)起通知</button>  </body>  <script>    window.addEventListener("load", function() {      // 首先,讓我們檢查我們是否有權(quán)限發(fā)出通知      // 如果沒有,我們就請求獲得權(quán)限      if (window.Notification && Notification.permission !== "granted") {        Notification.requestPermission(function(status) {          if (Notification.permission !== status) {            Notification.permission = status;          }        });      }      var button = document.getElementsByTagName("button")[0];      button.addEventListener("click", function() {        // 如果用戶同意就創(chuàng)建一個通知        if (window.Notification && Notification.permission === "granted") {          var n = new Notification("Hi!");        }        // 如果用戶沒有選擇是否顯示通知        // 注:因為在 Chrome 中我們無法確定 permission 屬性是否有值,因此        // 檢查該屬性的值是否是 "default" 是不安全的。        else if (window.Notification && Notification.permission !== "denied") {          Notification.requestPermission(function(status) {            if (Notification.permission !== status) {              Notification.permission = status;            }            // 如果用戶同意了            if (status === "granted") {              var n = new Notification("Hi!");            }            // 否則,我們可以讓步的使用常規(guī)模態(tài)的 alert            else {              alert("Hi!");            }          });        }        // 如果用戶拒絕接受通知        else {          // 我們可以讓步的使用常規(guī)模態(tài)的 alert          alert("Hi!");        }      });    });  </script></html>

 

當我們打開界面的時候,就會彈出授權(quán)申請,如果我們點擊 允許 ,然后點擊按鈕,就可以發(fā)送一條通知到桌面,我們就可以在桌面右下角看到這條通知。

HTML5,Web,Notification,桌面通知

上面我們只是顯示一條消息。

if (status === "granted") {  var n = new Notification("Hi");}

如果我們有很多消息的話,比如我是用個for循環(huán)來模擬大量通知的情況。

for(var i=0; i<10; i++) {    var n = new Notification("Hi,"+i);}

可以看到有10條通知都顯示出來。但是某些情況下對于用戶來說,顯示大量通知是件令人痛苦的事情。

比如,如果一個即時通信應用向用戶提示每一條傳入的消息。為了避免數(shù)以百計的不必要通知鋪滿用戶的桌面,可能需要接管一個掛起消息的隊列。

HTML5,Web,Notification,桌面通知

因此,需要為新建的通知添加一個 標記 。

如果有一條新通知和上一條通知具有相同的標記,那么這條新通知將會替換上一條通知,最后桌面上只會顯示最新的通知。

還是上面的例子,只需要在觸發(fā)通知加個 tag 屬性即可:

 

for (var i = 0; i < 10; i++) {   // 最后只看到內(nèi)容為 "Hi! 9" 的通知    var n = new Notification("Hi! " + i, {tag: 'soManyNotification'});}

最后

消息通知是個不錯的特性,可是也不排除有些站點惡意的使用這個功能,一旦用戶授權(quán)之后,不時的推送一些不太友好的消息,打擾用戶的工作,這個時候我們可以移除該站點的權(quán)限,禁用其消息通知功能。

我們可以點擊瀏覽器地址輸入框左邊的嘆號就有一個通知的選項,我們可以修改授權(quán)?;蛘咴谕ㄖ撁嬉灿行薷耐ㄖ倪x項,可以根據(jù)具體情況進行修改授權(quán)通知。

HTML5,Web,Notification,桌面通知

HTML5,Web,Notification,桌面通知

于是最基本的 Web Notification 就實現(xiàn)了。

總結(jié)

以上所述是小編給大家介紹的HTML5中的Web Notification桌面通知功能的實現(xiàn)方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!


注:相關(guān)教程知識閱讀請移步到HTML教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 毛片在线播放视频 | 欧美日韩亚洲一区二区三区 | 久草在线免费资源站 | 日韩字幕在线 | 斗破苍穹在线观看免费完整观看 | 爽妇网国产精品 | 成人精品一区二区三区中文字幕 | 久久不射电影 | 午夜激情视频网站 | 福利在线免费 | 亚洲成人黄色片 | 日本在线视 | 看免费毛片 | 91精品久久久久久久久久久 | 日韩三级伦理在线观看 | 欧美一级做a | 少妇一级淫片免费放播放 | 久久精品欧美一区二区三区不卡 | 成人毛片网 | 得得啪在线视频 | 999精品国产 | 久久精品一区二区三 | 免费一级a毛片免费观看 | 天天草夜夜骑 | 男女无套免费视频 | 欧美一区二区黄 | 精品国产久 | 久久国产精品电影 | 农村寡妇偷毛片一级 | 欧美日韩激情 | 一级做a爰性色毛片免费1 | 欧美aaaaa一级毛片在线 | 国产一精品一av一免费爽爽 | 日本一级黄色大片 | 亚洲网站在线播放 | 久久99久久99免费视频 | 羞羞网站 | 销魂美女一区二区 | 看国产精品| 久久成人综合视频 | 涩涩操|