Уведомление
Ограниченная доступность
Эта функция не является базовой, так как она не работает в некоторых из наиболее широко используемых браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Интерфейс Notification API уведомлений используется для настройки и отображения настольных уведомлений пользователю.
Внешний вид и определённые функции этих уведомлений различаются на разных платформах, но в общем случае они обеспечивают асинхронный способ предоставления информации пользователю.
Конструктор
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.
Примеры
Предположим этот базовый 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-originiframe.", "From Firefox 72 onwards, can only be called in response to a user gesture such as a click event."] |
23 | 157–15Only supported the deprecated callback syntax. |
42 | 22["From Firefox Android 79 onwards, cannot be called from a cross-originiframe.", "From Firefox Android 79 onwards, can only be called in response to a user gesture such as a click event."] |
29 | 16.4The parentNotification 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. |
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 | Нет |
См. также
© 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