JavaScript Notification.requestPermission() — запит дозволу на сповіщення
Статичний метод Notification.requestPermission() питає в користувача дозвіл показувати сповіщення.
Загальний опис
Повертає проміс із одним із трьох значень: granted (дозволив), denied (заборонив), default (закрив вікно, не вирішивши).
І головне правило, яке порушує половина інтернету: не питай одразу після завантаження сторінки. Людина, яка щойно зайшла й ще нічого не побачила, майже напевно натисне «Заблокувати».
А це рішення остаточне. Повторний виклик після відмови мовчки поверне denied, не показавши жодного вікна. Другого шансу не буде — ніколи.
Питати треба тоді, коли користувач сам зробив дію, з якої видно, що сповіщення йому потрібні.
Браузери, до того ж, вимагають, щоб виклик стався у відповідь на дію користувача.
автор: NagarD
- Нотатка
-
Один невдалий запит закриває сповіщення для цього користувача назавжди. Не витрачай єдину спробу на випадкового відвідувача.
автор: NagarD
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| requestPermission | 22+ | 22+ | 16.4+ | 25+ | 14+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| requestPermission | - | yes | yes | 16.4+ |
Приклади
+ запропонувати свій приклад у пісочниці
Питаємо тоді, коли людина сама попросила.
HTML
<button id="subscribe">Нагадувати про нові матеріали</button>
JS
const button = document.getElementById('subscribe');
button.addEventListener('click', async () => {
// уже вирішено раніше — не питаємо вдруге
if (Notification.permission === 'denied') {
alert('Сповіщення заблоковано в налаштуваннях браузера');
return;
}
const permission = await Notification.requestPermission();
if (permission === 'granted') {
new Notification('Готово', { body: 'Ми повідомимо про новини' });
}
});
// а так робити НЕ ТРЕБА:
// window.onload = () => Notification.requestPermission();
Коментарі
Коментарів ще немає — будьте першим!