国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Web Notifications 學習

Forelax / 2562人閱讀

摘要:據猜測是為瀏覽器翻譯服務。通知內容,顯示在通知標題之下,默認為空字符串標記通知的類型,打上標簽,默認為空字符串。在最新的技術評審稿中,該參數被舍棄設置該標志表示最終用戶將不能很容易地清除。設置該標志,通知將為永久型通知。

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

相關文章

  • 一個簡單的網頁通知(Web Notifications API)實例

    摘要:一些情況下,我們希望網頁可以直接向桌面推送消息。查看一個簡單的例子請求權限彈出一個通知兩秒后關閉通知首先,我們需要判斷瀏覽器是否支持。如果通過向用戶請求權限,這是瀏覽器會彈出一個是否允許顯示通知的提示如果用戶選擇了允許,那么返回的將會是。 一些情況下,我們希望網頁可以直接向桌面推送消息。本文利用 HTML5 的 Web Notifications API 來展示具體的代碼該如何編寫,同...

    keelii 評論0 收藏0
  • 【譯】雜談:HTML 5的消息通知機制

    摘要:原文譯文的消息通知機制譯者已經被應用到開發中。所以先要征求用戶的許可而不是直接顯示通知。然后,獲取用戶許可之后,我們可以顯示兩種類型的信息最后執行通知代碼。 原文:HTML 5 Notification 譯文:HTML 5 的消息通知機制 譯者:dwqs showImg(https://segmentfault.com/img/bVks7a); HTML 5 已經被應用到Web...

    付倫 評論0 收藏0

發表評論

0條評論

Forelax

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<