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
dirzoptions. - Jeśli
langzoptionsjest prawidłowym językiem (zgodnym z wymogami dokumentu BCP 47) lub pustym łańcuchem znakowym to ustaw język w notification nalangzoptions, 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
bodyzoptions. - Ustaw etykietę w notification na
tagzoptions. - Jeśli
iconwoptionsjest obecny to parsujiconprzy 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
datazoptions. 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