Notification#
new Notification()#
Interfejs Notification może być wywoływany w roli konstruktora, dzięki czemu pozwala na bezpośrednie tworzenie nowych powiadomień wprost z interfejsu.
Składnia#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var new_notification = new Notification(title [, options]);
gdzie poszczególne człony oznaczają:
new_notification
- referencja do nowego powiadomienia.title
- tytuł powiadomienia w postaci łańcucha znakowego. Może to być dowolny łańcuch znakowy (nawet pusty).options
- opcjonalny obiekt określający szczegółowe parametry powiadomienia. Oto dostępne właściwości dla obiektu:dir
- łańcuch znakowy reprezentujący kierunek tekstu w powiadomieniu. Dozwolone są następujące wartości:"auto"
(domyślnie)"ltr"
"rtl"
lang
- łańcuch znakowy reprezentujący główny język powiadomienia. Domyślną wartością jest pusty łańcuch znakowy.body
- łańcuch znakowy reprezentujący ciało powiadomienia. Domyślną wartością jest pusty łańcuch znakowy.tag
- łańcuch znakowy reprezentujący etykietę powiadomienia. Domyślną wartością jest pusty łańcuch znakowy.icon
- łańcuch znakowy reprezentujący URL ikony powiadomienia. Domyślną wartością jest pusty łańcuch znakowy.data
- prywatne dane dowolnego typu (np. liczba, łańcuch znakowy, obiekt itd.). Domyślną wartością jest wartośćnull
.
Algorytm wywołania konstruktora new Notification(title, options)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Niech notification będzie nowym powiadomieniem reprezentowanym przez objekt
Notification
. - Ustaw tytuł w notification na
title
. - Ustaw kierunek w notification na
dir
zoptions
. - Jeśli
lang
zoptions
jest prawidłowym językiem (zgodnym z wymogami dokumentu BCP 47) lub pustym łańcuchem znakowym to ustaw język w notification nalang
zoptions
, w przeciwnym razie ustaw go na pusty łańcuch znakowy. - Ustaw pochodzenie w notification na pochodzenie z wejściowego obiektu ustawień.
- Ustaw ciało w notification na
body
zoptions
. - Ustaw etykietę w notification na
tag
zoptions
. - Jeśli
icon
woptions
jest obecny to parsujicon
przy użyciu API bazowego URL określonego przez wejściowy obiekt ustawień, i jeśli to nie zwróci błędu to ustaw URL ikony w notification na zwracaną wartość. W przeciwnym razie URL ikony pozostaje nieustawiony. - Ustaw dane w notification na ustrukturyzowany klon
data
zoptions
. W razie problemów ponownie zrzuć wyjątek. - Zwróć notification, ale kontynuuj wykonywanie kolejnych kroków w sposób asynchroniczny.
- Jeśli platforma powiadomień wspiera ikony i URL ikony został ustawiony to agent użytkownika może rozpocząć w tym miejscu pobieranie ikony wskazywanej przez URL ikony w notification.
- Uruchom kroki pokazywania dla notification.
Obiekt zwracany przez konstruktor new Notification()
implementuje interfejs Notification, dlatego ma dostęp do wszystkich poleceń z tego interfejsu (oraz z kolejnych interfejsów w łańcuchu dziedziczenia).
Prosty przykład:
<script>
// Tworzymy nowe powiadomienie
var notification1 = new Notification("piesek");
document.write(notification1); // [object Notification]
document.write("<br>");
document.write(notification1.title); // piesek
document.write("<br>");
document.write(notification1.dir); // auto
document.write("<br>");
document.write(notification1.lang); // "" - pusty łańcuch
document.write("<br>");
document.write(notification1.body); // "" - pusty łańcuch
document.write("<br>");
document.write(notification1.tag); // "" - pusty łańcuch
document.write("<br>");
document.write(notification1.icon); // "" - pusty łańcuch
document.write("<br>");
document.write(notification1.data); // undefined
document.write("<br><br>");
// Tworzymy kolejne powiadomienie
var notification2 = new Notification("piesek", {
dir: "rtl",
lang: "pl",
body: "Bardzo miła psina",
tag: "mieszaniec",
icon: "http://www.crimsteam.site90.net/icon.ico",
data: 6
});
document.write(notification2); // [object Notification]
document.write("<br>");
document.write(notification2.title); // piesek
document.write("<br>");
document.write(notification2.dir); // rtl
document.write("<br>");
document.write(notification2.lang); // pl
document.write("<br>");
document.write(notification2.body); // Bardzo miła psina
document.write("<br>");
document.write(notification2.tag); // mieszaniec
document.write("<br>");
document.write(notification2.icon); // http://www.crimsteam.site90.net/icon.ico
document.write("<br>");
document.write(notification2.data); // undefined
</script>
Interfejs Web IDL#
[Constructor(DOMString title, optional NotificationOptions options), Exposed=Window,Worker] interface Notification : EventTarget { }; dictionary NotificationOptions { NotificationDirection dir = "auto"; DOMString lang = ""; DOMString body = ""; DOMString tag = ""; DOMString icon; any data = null; }; enum NotificationDirection { "auto", "ltr", "rtl" };
Specyfikacje i inne materiały#
Pasek społecznościowy