摘要:據猜測是為瀏覽器翻譯服務。通知內容,顯示在通知標題之下,默認為空字符串標記通知的類型,打上標簽,默認為空字符串。在最新的技術評審稿中,該參數被舍棄設置該標志表示最終用戶將不能很容易地清除。設置該標志,通知將為永久型通知。
Web Notification
網頁通知API。
這是2011年由谷歌技術員John Gregg提出的一項網頁通知api。
請讀者直接參考whatwg工作組對這個api的定義
Notifications API
API設計[Constructor(DOMString title, optional NotificationOptions options), Exposed=(Window,Worker)] interface Notification : EventTarget { static readonly attribute NotificationPermission permission; [Exposed=Window] static void requestPermission(optional NotificationPermissionCallback callback); attribute EventHandler onclick; attribute EventHandler onshow; attribute EventHandler onerror; attribute EventHandler onclose; readonly attribute DOMString title; readonly attribute NotificationDirection dir; readonly attribute DOMString lang; readonly attribute DOMString body; readonly attribute DOMString tag; readonly attribute USVString icon; readonly attribute USVString sound; // 目前還沒有暴露振動屬性;見 bug 23682 readonly attribute boolean renotify; readonly attribute boolean silent; readonly attribute boolean noscreen; readonly attribute boolean sticky; [SameObject] readonly attribute any data; void close(); }; dictionary NotificationOptions { NotificationDirection dir = "auto"; DOMString lang = ""; DOMString body = ""; DOMString tag = ""; USVString icon; USVString sound; VibratePattern vibrate; boolean renotify = false; boolean silent = false; boolean noscreen = false; boolean sticky = false; any data = null; }; enum NotificationPermission { "default", "denied", "granted" }; callback NotificationPermissionCallback = void (NotificationPermission permission); enum NotificationDirection { "auto", "ltr", "rtl" };
從api設計可知,該api的構造器接受兩個參數,即通知標題與通知參數,該對象可在window和worker上被使用
通知標題
通知標題即是指用戶可見的通知內容,由容器顯示在通知窗口上
通知參數
dir
通知的方向,其可用類型為: 默認自動確認, 從左及右, 從右及左。在chrome最新瀏覽器上親測無用。。
lang
標記通知的標題,和身體的語言類型,默認為空字符串,若需要填寫,應填寫一個有效的 BCP 47 語言標記。據猜測是為瀏覽器翻譯服務。
body
通知內容,顯示在通知標題之下,默認為空字符串
tag
標記通知的類型,打上標簽,默認為空字符串。使用該tag的場景是: 1.多實例通知并發操作的時候,當兩個通知同時出現時,同一tag只出現一次。2.單實例時,兩個定義了相同的tag的通知實體,會顯示最新那個。
icon
指定通知圖標,接受一個URI資源標識符字符串,不填或解析錯誤時,默認未定義
sound
指定通知聲效,同上。在最新的Notifications技術評審稿中,該參數被舍棄
vibrate
指定通知是否震動,該參數接洽了新的vibrate api, 通過valid pattern驅動,具體請點擊鏈接查看示例。在最新的Notifications技術評審稿中,該參數被舍棄
renotify
當一個通知列表中通知被替換時,指定該通知是否再次顯示。值為true||false。在最新的Notifications技術評審稿中,該參數被舍棄
silent
該標志表示不接收聲音或者振動通知,值為true||false。在最新的Notifications技術評審稿中,該參數被舍棄
noscreen
設置該標志表示設備屏幕不會被啟用,值為true||false。在最新的Notifications技術評審稿中,該參數被舍棄
sticky
設置該標志表示最終用戶將不能很容易地清除 notification。設置該標志,通知將為永久型通知。在最新的Notifications技術評審稿中,該參數被舍棄
data
擴展數據,在最新的Notifications技術評審稿中,該參數被舍棄
可設置的事件回調var not = new Notification("Gebrünn Gebrünn by Paul Kalkbrenner"); // 當點擊通知時 not.onclick = function () { alert("clicked") } // 當通知出現時 not.onshow = function () { alert("show") } // 當通知關閉時 not.onclose = function () { alert("closed") } // 當通知發生錯誤時 not.onerror = function (e) { console.log(e.message) }靜態屬性
Notification.permission:獲取用戶當前對通知的設置,包括default,denied, granted三個枚舉值。default相當于禁止顯示,表示用戶沒有設置通知許可,denied表示用戶設置過不希望接受通知,同時通知是無法顯示的,granted可以顯示通知
靜態方法Notification.requestPermission(ptional NotificationPermissionCallback callback)該方法接受一個回調,回調帶一個參數status。注意,在最新的技術評審稿中,調用該方法是異步的,會返回一個promise對象,我們完全可以點個then去處理status。
在評審稿中,它首先會設置permission = status,如果status === "default",瀏覽器會彈出一個小窗,詢問用戶對該域進行通知設置。然后異步處理我們的callback。例子如下
function notifyMessage(message, options, callback) { if (Notification && Notification.permission === "granted") { var notification = new Notification(message, options); callback(null, notification); } else if (Notification.requestPermission) { Notification.requestPermission(function (status) { if (Notification.permission !== status) { Notification.permission = status; } if (status === "granted") { var notification = new Notification(message, options); callback(null, notification); } else { callback(new Error("user denied")); } }); } else { callback(new Error("doesn"t support Notification API")); } } function notifyMessage(message, options, callback) { if (Notification && Notification.permission === "granted") { var notification = new Notification(message, options); callback(null, notification); } else if (Notification.requestPermission) { Notification .requestPermission() .then(function (status) { new Notification(message, options); callback(null, notification); }) .catch(function (status) { callback(new Error("user denied")); }); } else { callback(new Error("doesn"t support Notification API")); } }實例方法
notification.close();直接關閉通知。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88123.html
摘要:一些情況下,我們希望網頁可以直接向桌面推送消息。查看一個簡單的例子請求權限彈出一個通知兩秒后關閉通知首先,我們需要判斷瀏覽器是否支持。如果通過向用戶請求權限,這是瀏覽器會彈出一個是否允許顯示通知的提示如果用戶選擇了允許,那么返回的將會是。 一些情況下,我們希望網頁可以直接向桌面推送消息。本文利用 HTML5 的 Web Notifications API 來展示具體的代碼該如何編寫,同...
摘要:原文譯文的消息通知機制譯者已經被應用到開發中。所以先要征求用戶的許可而不是直接顯示通知。然后,獲取用戶許可之后,我們可以顯示兩種類型的信息最后執行通知代碼。 原文:HTML 5 Notification 譯文:HTML 5 的消息通知機制 譯者:dwqs showImg(https://segmentfault.com/img/bVks7a); HTML 5 已經被應用到Web...
閱讀 1255·2023-04-26 02:38
閱讀 941·2023-04-25 20:13
閱讀 3594·2021-11-19 11:31
閱讀 2401·2019-08-30 15:55
閱讀 2726·2019-08-30 14:11
閱讀 3163·2019-08-30 13:45
閱讀 1379·2019-08-29 18:41
閱讀 1151·2019-08-29 16:18