Notifications API負責顯示用戶系統通知。這是瀏覽器提供給開發人員的界面,即使未在瀏覽器中打開網站,也允許向用戶顯示消息。
通知API簡介
這通知API是瀏覽器提供給開發人員的界面,向用戶顯示消息,即使沒有在瀏覽器中打開網站/網絡應用程序,也必須獲得他們的許可。
這些消息是一致且本機的,這意味著接收人習慣於它們的UI和UX,它們是系統範圍的,而不是特定於您的站點的。
結合推送API這項技術可能是增加用戶參與度並增強應用程序功能的成功方法。
Notifications API與服務人員,因為它們是推送通知所必需的。你能夠在不使用Push的情況下使用Notifications API,但其用例有限。
if (window.Notification && Notification.permission !== "denied") {
Notification.requestPermission((status) => {
// status is "granted", if accepted by user
var n = new Notification('Title', {
body: 'I am the body text!',
icon: '/path/to/icon.png' // optional
})
})
}
n.close()
權限
要向用戶顯示通知,您必須具有這樣做的權限。
這Notification.requestPermission()
方法調用請求此權限。
你可以打電話
Notification.requestPermission()
以這種非常簡單的形式,它將顯示一個權限授予面板-除非之前已經授予了權限。
要在用戶交互(允許或拒絕)時執行某些操作,可以向其附加處理功能:
const process = (permission) => {
if (permission === "granted") {
// ok we can show the permission
}
}
Notification.requestPermission((permission) => {
process(permission)
}).then((permission) => {
process(permission)
})
看看我們如何傳遞回調,我們也期待承諾。這是因為不同的實現Notification.requestPermission()
過去的版本,現在我們必須支持,因為我們不知道瀏覽器中正在運行哪個版本。因此,為了將內容保存在一個位置,我在其中提取了權限處理process()
功能。
在這兩種情況下,都會傳遞一個函數permission
可以具有以下值之一的字符串:
granted
:用戶接受了,我們能夠顯示權限denied
:用戶拒絕了,我們不能顯示任何許可
這些值也可以通過檢查Notification.permission
屬性,如果用戶已被授予權限,則該屬性將計算為granted
或者denied
,但如果您尚未致電Notification.requestPermission()
但是,它將解決default
。
建立通知
這Notification
被暴露的物體window
瀏覽器中的對象允許您創建通知並自定義其外觀。
這是最簡單的示例,可以在您請求權限後使用:
Notification.requestPermission()
new Notification('Hey')
您可以通過一些選項來自定義通知。
添加身體
首先,您可以添加一個正文,通常以單行顯示:
new Notification('Hey', {
body: 'You should see this!'
})
新增圖片
您可以添加一個圖標屬性:
new Notification('Hey', {
body: 'You should see this!',
icon: '/user/themes/writesoftware/favicon.ico'
})
可以在以下位置找到更多具有平台特定屬性的自定義選項:https://developer.mozilla.org/docs/Web/API/Notification
關閉通知
您可能想要在打開通知後關閉它。
為此,請創建對您打開的通知的引用:
const n = new Notification('Hey')
然後您可以使用以下命令將其關閉:
n.close()
或超時:
setTimeout(n.close(), 1 * 1000)
免費下載我的JavaScript初學者手冊
更多瀏覽器教程:
- HTML5提供了一些有用的技巧
- 我如何使基於CMS的網站脫機工作
- 漸進式Web應用程序完整指南
- 提取API
- 推送API指南
- 頻道消息傳遞API
- 服務人員教程
- 緩存API指南
- 通知API指南
- 深入IndexedDB
- Selectors API:querySelector和querySelectorAll
- 通過延遲和異步有效地加載JavaScript
- 文檔對像模型(DOM)
- Web存儲API:本地存儲和會話存儲
- 了解HTTP Cookies的工作原理
- 歷史API
- WebP圖像格式
- XMLHttpRequest(XHR)
- 深入的SVG教程
- 什麼是數據網址
- 學習網絡平台的路線圖
- CORS,跨域資源共享
- 網絡工作者
- requestAnimationFrame()指南
- 什麼是Doctype
- 使用DevTools控制台和控制台API
- 語音合成API
- 如何在純JavaScript中等待DOM ready事件
- 如何將類添加到DOM元素
- 如何遍歷來自querySelectorAll的DOM元素
- 如何從DOM元素中刪除類
- 如何檢查DOM元素是否具有類
- 如何更改DOM節點值
- 如何將click事件添加到從querySelectorAll返回的DOM元素列表中
- WebRTC,實時Web API
- 如何在JavaScript中獲取元素的滾動位置
- 如何替換DOM元素
- 如何只接受輸入文件字段中的圖像
- 為什麼要使用瀏覽器的預覽版?
- 斑點對象
- 文件對象
- FileReader對象
- FileList對象
- ArrayBuffer
- ArrayBufferView
- URL對象
- 類型數組
- DataView對象
- BroadcastChannel API
- Streams API
- FormData對象
- 導航器對象
- 如何使用地理位置API
- 如何使用getUserMedia()
- 如何使用拖放API
- 如何在網頁上滾動
- 在JavaScript中處理表單
- 鍵盤事件
- 鼠標事件
- 觸摸事件
- 如何從DOM元素中刪除所有子級
- 如何使用原始Javascript創建HTML屬性
- 如何檢查是否使用JavaScript選中了複選框?
- 如何使用JavaScript複製到剪貼板
- 如何使用JavaScript禁用按鈕
- 如何在瀏覽器中使頁面可編輯
- 如何使用URLSearchParams在JavaScript中獲取查詢字符串值
- 如何一次刪除頁面上的所有CSS
- 如何使用insertAdjacentHTML
- Safari,退出前警告
- 如何使用JavaScript將圖像添加到DOM
- 如何重設表格
- 如何使用Google字體