Notification#
Notification.requestPermission()#
Metoda requestPermission()
wysyła prośbę o ustawienie zezwolenia wyświetlania powiadomień dla danego pochodzenia. Opcjonalnie można przekazać funkcję zwrotną wywoływaną po podjętej przez użytkownika decyzji. Metoda jest statyczna, dlatego odwołujemy się do niej wprost z interfejsu Notification.
Składnia#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
Notification.requestPermission([callback]);
gdzie poszczególne człony oznaczają:
Notification
- interfejs udostępniany w globalnym zasięgu.callback
- opcjonalna funkcja zwrotna, która może być wywoływana z jednym argumentem:- Podjęta decyzja. W zasadzie otrzymamy łańcuch znakowy wprost z właściwości
Notification.permission
:"default"
- domyślna wartość. Użytkownik nie podjął jeszcze decyzji (albo zamknął okno z pytaniem, np. za pomocą "X")."denied"
- użytkownik podjął decyzję i nie zgadza się na wyświetlanie powiadomień."granted"
- użytkownik podjął decyzję i zgadza się na wyświetlanie powiadomień.
Wywołanie funkcji zwrotnej następuje samoczynnie, kiedy okno z zapytaniem o zezwolenie wyświetlania powiadomień zostanie zamknięte lub kiedy użytkownik podjął już jakąś decyzję.
- Podjęta decyzja. W zasadzie otrzymamy łańcuch znakowy wprost z właściwości
Algorytm wywołania metody requestPermission(callback)
nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:
- Powróć, ale kontynuuj wykonywanie kolejnych kroków w sposób asynchroniczny.
- Niech permission będzie łańcuchem znakowym wskazywanym przez zezwolenie.
- Jeśli wartością permission jest łańcuch znakowy
"default"
to poproś użytkownika, czy zgadza się na wyświetlanie powiadomień dla pochodzenia z wejściowego obiektu ustawień. Jeśli tak, to ustaw permission na łańcuch znakowy"granted"
, w przeciwnym razie na łańcuch znakowy"denied"
. - Kolejkuj zadanie dla ustawienia zezwolenia na permission i jeśli
callback
była przekazana to wywołajcallback
z pierwszym argumentem w postaci permission.
Podjęcie decyzji przez użytkownika (akceptacja lub odrzucenie) spowoduje, że aplikacja kliencka nie będzie wyświetlała kolejnych okien z zapytaniem dla danej witryny, aczkolwiek funkcja zwrotna przekazana do metody requestPermission()
będzie wywoływana zawsze (niezależnie od aktualnego stanu zezwolenia).
Prosty przykład:
<script>
document.write(Notification); // function Notification() { [native code] }
document.write("<br>");
Notification.requestPermission(function(permit){
var data = "Argument metody: " + permit
+ "<br>" + "Notification.permission: " + Notification.permission;
document.write(data);
document.close();
});
</script>
Interfejs Web IDL#
static void requestPermission(optional NotificationPermissionCallback callback); callback NotificationPermissionCallback = void (NotificationPermission permission); enum NotificationPermission { "default", "denied", "granted" };