Уведомление: статический метод requestPermission()
Ограниченная доступность
Эта функция не является Baseline, так как она не работает во всех широко используемых браузерах.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Статический метод requestPermission() интерфейса Notification запрашивает разрешение у пользователя для текущего источника отображать уведомления.
Метод возвращает Promise, который выполняется со строкой, указывающей, было ли разрешение предоставлено или отклонено.
Синтаксис
Notification.requestPermission() // Deprecated syntax using a callback Notification.requestPermission(callback)
Параметры
callbackНеобязательно Устаревший-
Необязательная функция обратного вызова, которая вызывается со значением разрешения. Устарела в пользу значения возврата
Promise.
Значение возврата
A Promise, который разрешается в строку с разрешением, выбранным пользователем. Возможные значения для этой строки:
granted-
Пользователь явно предоставил разрешение текущему источнику отображать системные уведомления.
denied-
Пользователь явно запретил текущему источнику отображать системные уведомления.
default-
Решение пользователя неизвестно; в этом случае приложение будет действовать так, как будто разрешение было
denied.
Устаревшая версия метода возвращает undefined.
Примеры
Предположим этот базовый HTML:
<button onclick="notifyMe()">Notify me!</button>
Можно отправить уведомление следующим образом — здесь представлен достаточно подробный и полный набор кода, который можно использовать, если вы хотите сначала проверить, поддерживаются ли уведомления, затем проверить, было ли предоставлено разрешение для текущего источника отправлять уведомления, затем запросить разрешение, если необходимо, прежде чем отправить уведомление.
Обратите внимание, что запрос должен выполняться в ответ на взаимодействие пользователя: ниже, метод вызывается в обработчике события click.
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>, другие браузеры последуют.
Чтобы посмотреть пример в действии, проверьте наш пример списка дел (также см. приложение, работающее в режиме реального времени).
Спецификации
| Спецификация |
|---|
| API уведомлений # dom-notification-requestpermission |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
requestPermission_static |
20 | 14 | 22["С Firefox 70 и далее, не может быть вызван из кросс-доменногоiframe.", "С Firefox 72 и далее, может быть вызван только в ответ на действие пользователя, такое как событие click."] |
23 | 157–15Поддерживается только устаревший синтаксис обратного вызова. |
42 | 22["С Firefox Android 79 и далее, не может быть вызван из кросс-доменногоiframe.", "С Firefox Android 79 и далее, может быть вызван только в ответ на действие пользователя, такое как событие click."] |
29 | 16.4Интерфейс родительскогоNotification не определён, если страница не является веб-приложением, сохранённым на главном экране. В манифесте приложения должно быть задано нестандартное значение display. |
4.0 | Нет |
returns_promise |
47 | 79 | 46 | 34 | 15 | 47 | 46 | 34 | 16.4 | 5.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/requestPermission_static