JavaScript Notification — системні сповіщення браузера


Notification показує системне сповіщення — те, що виринає в кутку екрана поза вікном браузера.

автор: NagarD

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

Показати його можна лише з дозволу користувача, і дозвіл питається явно — Notification.requestPermission().

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

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

Сповіщення з закритої вкладки (справжній push) показує вже ServiceWorker — сам по собі Notification живе, доки жива сторінка.

автор: NagarD

Нотатка

Відмова незворотна: після «Заблокувати» повторний requestPermission() мовчки поверне denied, не показавши жодного вікна. Один невдалий запит — і сповіщення для цього користувача закриті назавжди.

автор: NagarD

Синтаксис

new Notification("Заголовок", { body: "Текст" });

методи

Метод Опис
close Закриває сповіщення.
requestPermission Питає в користувача дозвіл на сповіщення.

властивості

Властивість Опис
permission Стан дозволу: default, granted, denied.
title Заголовок сповіщення.
body Текст сповіщення.
icon Адреса іконки.

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
Notification 22+ 22+ 16.4+ 25+ 14+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
Notification - yes yes 16.4+

Приклади

+ запропонувати свій приклад у пісочниці

Дозвіл питаємо на дію користувача, а не на завантаженні.

HTML

<button id="subscribe">Увімкнути нагадування</button>

JS

const button = document.getElementById('subscribe');

button.addEventListener('click', async () => {
    // питаємо ТУТ — коли людина сама попросила
    const permission = await Notification.requestPermission();

    if (permission !== 'granted') {
        console.log('Користувач відмовив — більше не питаємо');
        return;
    }

    new Notification('Нагадування увімкнено', {
        body: 'Ми повідомимо про нові матеріали',
        icon: '/img/logo.svg',
        tag: 'subscribe', // однакові теґи не множаться
    });
});
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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