搜尋
首頁web前端html教學HTML5 桌面通知 Notification API 用法

HTML5 桌面通知 Notification API 用法

Oct 23, 2017 am 09:47 AM
apihtml5notification

前言

Notification API 是 HTML5 新增的桌面通知 API,用於向使用者顯示通知資訊。該通知是脫離瀏覽器的,即使用戶沒有停留在當前標籤頁,甚至最小化了瀏覽器,該通知資訊也一樣會置頂顯示出來。

使用者權限

想要向使用者顯示通知訊息,需要取得使用者權限,而相同的網域只需要取得一次權限。只有在使用者允許的權限下,Notification 才能發揮作用,避免某些網站的廣告濫用 Notification 或其它會對使用者造成影響。那麼如何知道用戶到底是允不允許的呢?

Notification.permission 此屬性用於表明目前通知顯示的授權狀態,可能的值包括:

  • default :不知道使用者的選擇,預設。

  • granted :使用者允許。

  • denied :用戶拒絕。


if(Notification.permission === 'granted'){
    console.log('用户允许通知');}else if(Notification.permission === 'denied'){
    console.log('用户拒绝通知');}else{
    console.log('用户还没选择,去向用户申请权限吧');}

請求權限

#當使用者還沒選擇的時候,我們需要向使用者去請求權限。 Notification 物件提供了 requestPermission() 方法請求使用者目前來源的權限以顯示通知。

以前基於回呼的語法已經棄用(當然在現在的瀏覽器中還是能用的),最新的規範已將此方法更新為基於promise 的語法:


Notification.requestPermission().then(function(permission) {
    if(permission === 'granted'){
        console.log('用户允许通知');
    }else if(permission === 'denied'){
        console.log('用户拒绝通知');
    }});

推播通知

取得使用者授權之後,就可以推播通知了。


var notification = new Notification(title, options)

參數如下:

  • title:通知的標題

  • ##options:通知的設定選項(可選)。

    • body:通知的內容。

    • tag:代表通知的一個識別標籤,相同tag時只會開啟同一個通知視窗。

    • icon:要在通知中顯示的圖示的URL。

    • HTML5 桌面通知 Notification API 用法:要在通知中顯示的圖像的URL。

    • data:想要和通知關聯的任務類型的資料。

    • requireInteraction:通知保持有效不自動關閉,預設為false。

還有一些其他的參數,因為用不了或沒什麼用這裡就沒必要說了。


var n = new Notification('状态更新提醒',{
    body: '你的朋友圈有3条新状态,快去查看吧',
    tag: 'linxin',
    icon: 'http://blog.gdfengshuo.com/HTML5 桌面通知 Notification API 用法s/avatar.jpg',
    requireInteraction: true})

通知訊息的效果圖如下:

HTML5 桌面通知 Notification API 用法

#關閉通知

從上面的參數可以看出,並沒有一個參數用來配置顯示時長的。我想要它 3s 後自動關閉的話,這時可以呼叫 close() 方法來關閉通知。


var n = new Notification('状态更新提醒',{
    body: '你的朋友圈有3条新状态,快去查看吧'})setTimeout(function() {
    n.close();}, 3000);

事件

Notification 介面的 onclick屬性指定一個事件偵聽器來接收 click 事件。當點擊通知視窗時會觸發對應事件,例如開啟一個網址,引導使用者回到自己的網站去。


var n = new Notification('状态更新提醒',{
    body: '你的朋友圈有3条新状态,快去查看吧',
    data: {
        url: 'http://blog.gdfengshuo.com'
    }})n.onclick = function(){
    window.open(n.data.url, '_blank');      // 打开网址
    n.close();                              // 并且关闭通知}

應用場景

前面說那麼多,其實就是為了用。那麼到底哪些地方可以用到呢?

現在網站的訊息提醒,大多數都是在訊息中心顯示個訊息數量,然後發送電子郵件告訴用戶,這流程完全沒有錯。不過像我這種用戶,覺得別人點個贊,收藏一下都要發個郵件提醒我,老是要去刪郵件(強迫症),我是覺得挺煩的甚至關閉了郵件提醒。

當然這裡並不是說要用 Notification,畢竟它和郵件的功能完全不一樣。

我覺得比較適合的是新聞網站。用戶瀏覽新聞時,可以推播給用戶即時新聞。以騰訊體育為例,它就使用了 Notification API。在頁面中引入了一個 notification2017_v0118.js,有興趣可以看看別人是怎麼成熟的使用的。

一進入頁面,就取得授權,同時自己頁面有個浮動框提示你允許授權。如果允許之後,就開始給你推播通知了。不過它在關閉標籤卡的時候,通知也會被關閉,那是因為監聽了頁面 beforeunload 事件。


function addOnBeforeUnload(e) {
    FERD_NavNotice.notification.close();}if(window.attachEvent){
    window.attachEvent('onbeforeunload', addOnBeforeUnload);} else {
    window.addEventListener('beforeunload', addOnBeforeUnload, false);}

相容

說到相容,自然是倒下一大片,而且各瀏覽器的表現也會有點差異。行動端的幾乎全倒,PC端的還好大多都能支持,除了IE。所以使用前,需要先檢查瀏覽器是否支援 Notification。

以上是HTML5 桌面通知 Notification API 用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML,CSS和JavaScript:示例和實際應用HTML,CSS和JavaScript:示例和實際應用May 09, 2025 am 12:01 AM

HTML、CSS和JavaScript在網頁開發中的作用分別是:1.HTML用於構建網頁結構;2.CSS用於美化網頁外觀;3.JavaScript用於實現動態交互。通過標籤、樣式和腳本,這三者共同構築了現代網頁的核心功能。

如何在標籤上設置lang屬性?為什麼這很重要?如何在標籤上設置lang屬性?為什麼這很重要?May 08, 2025 am 12:03 AM

設置標籤的lang屬性是優化網頁可訪問性和SEO的關鍵步驟。 1)在標籤中設置lang屬性,如。 2)在多語言內容中,為不同語言部分設置lang屬性,如。 3)使用符合ISO639-1標準的語言代碼,如"en"、"fr"、"zh"等。正確設置lang屬性可以提高網頁的可訪問性和搜索引擎排名。

HTML屬性的目的是什麼?HTML屬性的目的是什麼?May 07, 2025 am 12:01 AM

htmlattributeseresene forenhancingwebelements'functionalityandAppearance.TheyAdDinformationTodeFineBehavior,外觀和互動,使網站互動,響應式,visalalyAppealing.AttributesLikutesLikeSlikEslikesrc,href,href,href,類,類型,類型,和dissabledtransfransformformformformformformformformformformformformformformforment

您如何在HTML中創建列表?您如何在HTML中創建列表?May 06, 2025 am 12:01 AM

toCreateAlistInHtml,useforforunordedlistsandfororderedlists:1)forunorderedlists,wrapitemsinanduseforeachItem,RenderingeringAsabulletedList.2)fororderedlists,useandfornumberedlists,useandfornumberedlists,casundfornumberedlists,casundfornthetthetthetthetthetthetthetttributefordforderfordforderforderentnumberingsnumberingsnumberingStys。

HTML行動:網站結構的示例HTML行動:網站結構的示例May 05, 2025 am 12:03 AM

HTML用於構建結構清晰的網站。 1)使用標籤如、、定義網站結構。 2)示例展示了博客和電商網站的結構。 3)避免常見錯誤如標籤嵌套不正確。 4)優化性能通過減少HTTP請求和使用語義化標籤。

您如何將圖像插入HTML頁面?您如何將圖像插入HTML頁面?May 04, 2025 am 12:02 AM

toinsertanimageIntoanhtmlpage,usethetagwithsrcandaltattributes.1)usealttextforAcccessibilityandseo.2)instementRcsetForresponSiveImages.3)applylazyloadingWithLoadingWithLoading =“ lazy” tooptimizeperformance.4)tooptimizeperformance.4)

HTML的目的:啟用Web瀏覽器可以顯示內容HTML的目的:啟用Web瀏覽器可以顯示內容May 03, 2025 am 12:03 AM

HTML的核心目的在於讓瀏覽器理解並展示網頁內容。 1.HTML通過標籤定義網頁結構和內容,如、到、等。 2.HTML5增強了多媒體支持,引入了和標籤。 3.HTML提供了表單元素,支持用戶交互。 4.優化HTML代碼可提升網頁性能,如減少HTTP請求和壓縮HTML。

為什麼HTML標籤對Web開發很重要?為什麼HTML標籤對Web開發很重要?May 02, 2025 am 12:03 AM

htmltagsareessentialforwebdevelopmentastheyandendenhancewebpages.1)semantictagsimproveaccessibilityandseo.2)semanteLayOut,語義和互動性。 3)poseriblesibilityandseoandseo.3)poseriblesoftagscanoftagscanoftagscanoptagscanoptimizeperefeneandimizeanDenSuroceRecRoscRoss-BrowserCrowserCercerComercompatibility。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。