Spec-Zone.ru › Web APIs

Уведомление: статический метод 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 15
7–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 Нет

См. также

  • Использование 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/requestPermission_static

Spec-Zone.ru

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