Spec-Zone.ru › Web APIs

Уведомление

Ограниченная доступность

Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.

  • Узнать больше
  • Посмотреть полную совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Интерфейс Notification API уведомлений используется для настройки и отображения настольных уведомлений пользователю.

Внешний вид и определённые функции этих уведомлений различаются на разных платформах, но в общем случае они обеспечивают асинхронный способ предоставления информации пользователю.

EventTarget Notification

Конструктор

Notification()

Создаёт новый экземпляр объекта Notification.

Статические свойства

Также наследует свойства от своего родительского интерфейса, EventTarget.

Notification.permission Только для чтения

Строка, представляющая текущее разрешение на отображение уведомлений. Возможные значения:

  • denied — Пользователь запретил отображение уведомлений.
  • granted — Пользователь разрешил отображение уведомлений.
  • default — Выбор пользователя неизвестен, и поэтому браузер будет действовать так, как если бы значение было запрещено.
Notification.maxActions Только для чтения Экспериментальная

Максимальное количество действий, поддерживаемых устройством и пользовательским агентом.

Свойства экземпляра

Также наследует свойства от своего родительского интерфейса, EventTarget.

Notification.actions Только для чтения Экспериментальная

Массив действий уведомления, как указано в параметре options конструктора.

Notification.badge Только для чтения

Строка, содержащая URL изображения, представляющего уведомление, когда нет места для отображения самого уведомления, например, в строке уведомлений Android. На устройствах Android значок должен подходить для устройств с разрешением до 4x, примерно 96 на 96 пикселей, и изображение будет автоматически замаскировано.

Notification.body Только для чтения

Строка тела уведомления, как указано в параметре options конструктора.

Notification.data Только для чтения

Возвращает структурированную копию данных уведомления.

Notification.dir Только для чтения

Направление текста уведомления, как указано в параметре options конструктора.

Notification.icon Только для чтения

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

Notification.image Только для чтения Экспериментальная

URL изображения, которое будет отображено как часть уведомления, как указано в параметре options конструктора.

Notification.lang Только для чтения

Код языка уведомления, как указано в параметре options конструктора.

Notification.renotify Только для чтения Экспериментальная

Указывает, следует ли уведомлять пользователя после того, как новое уведомление заменит старое.

Notification.requireInteraction Только для чтения

Логическое значение, указывающее, что уведомление должно оставаться активным до тех пор, пока пользователь не нажмёт на него или не закроет его, а не закрываться автоматически.

Notification.silent Только для чтения

Указывает, должно ли уведомление быть беззвучным — то есть, не должны издаваться звуки или вибрации независимо от настроек устройства.

Notification.tag Только для чтения

Идентификатор уведомления (если есть), как указано в параметре options конструктора.

Notification.timestamp Только для чтения Экспериментальная

Указывает время создания или применимости уведомления (прошлое, настоящее или будущее).

Notification.title Только для чтения

Заголовок уведомления, как указано в первом параметре конструктора.

Notification.vibrate Только для чтения Экспериментальная

Указывает шаблон вибрации для устройств с вибромодулем.

Статические методы

Также наследует методы от своего родительского интерфейса, EventTarget.

Notification.requestPermission()

Запрашивает разрешение у пользователя на отображение уведомлений.

Методы экземпляра

Также наследует методы от своего родительского интерфейса, EventTarget.

Notification.close()

Программно закрывает экземпляр уведомления.

События

Также наследует события от своего родительского интерфейса, EventTarget.

click

Срабатывает, когда пользователь нажимает на уведомление.

close

Срабатывает, когда пользователь закрывает уведомление.

error

Срабатывает, когда у уведомления возникает ошибка.

show

Срабатывает, когда уведомление отображается.

Примеры

Предположим этот базовый HTML:

<button onclick="notifyMe()">Notify me!</button>

Можно отправить уведомление следующим образом — здесь представлен довольно подробный и полный набор кода, который можно использовать, если вы хотите сначала проверить, поддерживаются ли уведомления, затем проверить, предоставлено ли разрешение для текущего источника на отправку уведомлений, затем запросить разрешение, если необходимо, прежде чем отправить уведомление.

function notifyMe() {
  if (!("Notification" in window)) {
    // Check if the browser supports notifications
    alert("This browser does not support desktop notification");
  } else if (Notification.permission === "granted") {
    // Check whether notification permissions have already been granted;
    // if so, create a notification
    const notification = new Notification("Hi there!");
    // …
  } else if (Notification.permission !== "denied") {
    // We need to ask the user for permission
    Notification.requestPermission().then((permission) => {
      // If the user accepts, let's create a notification
      if (permission === "granted") {
        const notification = new Notification("Hi there!");
        // …
      }
    });
  }

  // At last, if the user has denied notifications, and you
  // want to be respectful there is no need to bother them anymore.
}

Мы больше не отображаем демонстрационный пример на этой странице, так как Chrome и Firefox больше не позволяют запрашивать разрешения на уведомления из кросс-доменных <iframe>, а другие браузеры последуют этому примеру. Чтобы увидеть пример в действии, ознакомьтесь с нашим примером списка задач (также см. приложение, работающее в режиме реального времени).

Примечание: В приведённом выше примере уведомления генерируются в ответ на действие пользователя (нажатие кнопки). Это не только лучшая практика — вы не должны спамить пользователей уведомлениями, на которые они не согласились — но и в дальнейшем браузеры явно запретят уведомления, не вызванные действием пользователя. Например, Firefox уже делает это с версии 72.

Спецификации

Спецификация
API уведомлений
# api

Совместимость с браузерами

Настольный Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
Notification 20 14 224 23 7
42["Уведомление может быть отправлено только из сервисного воркера. Чтобы показать уведомление, см. ServiceWorkerRegistration.showNotification().", "Этот конструктор всегда вызывает исключение TypeError."]
224
29["Уведомление может быть отправлено только из сервисного воркера. Чтобы показать уведомление, см. ServiceWorkerRegistration.showNotification().", "Этот конструктор всегда вызывает исключение TypeError."]
16.4["Этот конструктор вызывает исключение ReferenceError, если страница не является веб-приложением, сохраненным на главном экране. В манифесте приложения должно быть значение display отличное от значения по умолчанию.", "Уведомление может быть отправлено только из сервисного воркера. Чтобы показать уведомление, см. ServiceWorkerRegistration.showNotification()."]
4.0["Уведомление может быть отправлено только из сервисного воркера. Чтобы показать уведомление, см. ServiceWorkerRegistration.showNotification().", "Этот конструктор всегда вызывает исключение TypeError."]
Нет
Notification
20["Начиная с Chrome 49, уведомления не работают в режиме инкогнито.", "До Chrome 42 добавления сервисных воркеров не поддерживались."]
14 224
23["Начиная с Opera 36, уведомления не работают в режиме инкогнито.", "До Opera 29 добавления сервисных воркеров не поддерживались."]
7
42Уведомление может быть отправлено только из сервисного воркера. Чтобы показать уведомление, см. ServiceWorkerRegistration.showNotification().
224
29["Уведомления в Opera для Android доступны только через сервисные воркеры. Чтобы показать уведомления на Android, см. ServiceWorkerRegistration.showNotification().", "Начиная с Opera для Android 36, уведомления не работают в режиме инкогнито."]
16.4["Интерфейс Notification не определен, если страница не является веб-приложением, сохраненным на главном экране. В манифесте приложения должно быть значение display отличное от значения по умолчанию.", "Уведомление может быть отправлено только из сервисного воркера. Чтобы показать уведомление, см. ServiceWorkerRegistration.showNotification()."]
4.0["Уведомления в Samsung Internet доступны только через сервисные воркеры. Чтобы показать уведомления на Android, см. ServiceWorkerRegistration.showNotification().", "Начиная с Samsung Internet 5.0, уведомления не работают в режиме инкогнито."]
Нет
actions 53 18 Нет 39 Нет 53 Нет 41 Нет 6.0 Нет
badge 53 18 Нет 39
17Поддержка значков для веб-приложений, сохраненных на Доке в Safari 17 на бета-версии macOS Sonoma
53 Нет 41
17Поддержка значков для веб-приложений, сохраненных на Доке в Safari на iOS 17 на бета-версии macOS Sonoma
6.0 Нет
body 33 14 26 23 11 42 26 29 16.4 4.0 Нет
click_event 20 14 22 23 7 42 22 29 16.4 4.0 Нет
close 20 14 22 23 7 42 22 29 16.4 4.0 Нет
close_event 20 14 22 23 7 42 22 29 16.4 4.0 Нет
data 44 16 34 31 16 44 34 32 16.4 4.0 Нет
dir 20 14 26 23 7 42 26 29 16.4 4.0 Нет
error_event 20 14 22 23 7 42 22 29 16.4 4.0 Нет
icon 33 14 26 23
НетСвойство может быть установлено, но не оказывает никакого эффекта.
42 26 29
НетСвойство может быть установлено, но не оказывает никакого эффекта.
4.0 Нет
image 56 18 Нет 43 Нет 56 Нет 43 Нет 6.0 Нет
lang 33 14 26 23 11 42 26 29 Нет 4.0 Нет
maxActions_static 48 18 Нет 35 Нет 48 Нет 35 Нет 5.0 Нет
permission_static 32 14 22 23 7 42 22 29
16.4Родительский интерфейс Notification не определен, если страница не является веб-приложением, сохраненным на главном экране. В манифесте приложения должно быть значение display отличное от значения по умолчанию.
4.0 Нет
renotify 50 79 Нет 37 Нет 50 Нет 37 Нет 5.0 Нет
requestPermission_static 20 14
22["From Firefox 70 onwards, cannot be called from a cross-origin iframe.", "From Firefox 72 onwards, can only be called in response to a user gesture such as a click event."]
23 15
7–15Only supported the deprecated callback syntax.
42
22["From Firefox Android 79 onwards, cannot be called from a cross-origin iframe.", "From Firefox Android 79 onwards, can only be called in response to a user gesture such as a click event."]
29
16.4The parent Notification interface is undefined unless the page is a web app saved to the home screen. The app's manifest must have a non-default display value.
4.0 Нет
requireInteraction 47 17
117Only supported on Windows. Behind a flag on other operating systems.
117
34 Нет 47
117Only supported on Windows. Behind a flag on other operating systems.
34 Нет 5.0 Нет
secure_context_required 62 79 67 49 Нет 62 67 46 Нет 8.0 Нет
show_event 20 14 22 23 7 42 22 29 Нет 4.0 Нет
silent 43 17 132 30 16.6 43 132 30 Нет 4.0 Нет
tag 20 14 26 23
НетThe property can be set, but has no effect.
42 26 29 Нет 4.0 Нет
timestamp 50 17 Нет 37 Нет 50 Нет 37 Нет 5.0 Нет
title 33 14 26 23 11 42 26 29 Нет 4.0 Нет
vibrate 53 79 Нет 40 Нет 53 Нет 41 Нет 6.0 Нет
worker_support 42 15 41 29 Нет 42 41 29 Нет 4.0 Нет

См. также

  • Использование API уведомлений

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Notification

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API