JavaScript Notification.requestPermission() — запит дозволу на сповіщення


Статичний метод Notification.requestPermission() питає в користувача дозвіл показувати сповіщення.

автор: NagarD

Загальний опис

Повертає проміс із одним із трьох значень: granted (дозволив), denied (заборонив), default (закрив вікно, не вирішивши).

І головне правило, яке порушує половина інтернету: не питай одразу після завантаження сторінки. Людина, яка щойно зайшла й ще нічого не побачила, майже напевно натисне «Заблокувати».

А це рішення остаточне. Повторний виклик після відмови мовчки поверне denied, не показавши жодного вікна. Другого шансу не буде — ніколи.

Питати треба тоді, коли користувач сам зробив дію, з якої видно, що сповіщення йому потрібні.

Браузери, до того ж, вимагають, щоб виклик стався у відповідь на дію користувача.

автор: NagarD

Нотатка

Один невдалий запит закриває сповіщення для цього користувача назавжди. Не витрачай єдину спробу на випадкового відвідувача.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
requestPermission 22+ 22+ 16.4+ 25+ 14+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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();
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід