Spec-Zone.ru › Web Extensions

permissions.request()

Запросить набор разрешений, указанных в переданном объекте permissions.Permissions.

Аргумент Permissions может содержать свойство origins, которое представляет собой массив разрешений для хостов, или свойство permissions, которое представляет собой массив разрешений для API, или оба. Разрешения должны быть взяты из набора разрешений, определённых в ключе optional_permissions файла manifest.json. Свойство origins может включать разрешения, соответствующие подмножеству хостов, определённых опциональным разрешением: например, если optional_permissions включает "*://mozilla.org/", то permissions.origins может включать "https://developer.mozilla.org/".

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

В зависимости от обстоятельств, браузер, вероятно, обработает запрос, спросив пользователя, разрешить ли запрошенные разрешения. Для всех запрошенных разрешений делается только один запрос: таким образом, либо все разрешения будут предоставлены, либо ни одно из них.

Любые предоставленные разрешения сохраняются расширением, даже при обновлении и переключении включения/выключения.

Это асинхронная функция, которая возвращает Promise.

Синтаксис

let requesting = browser.permissions.request(
  permissions                // Permissions object
)

Параметры

permissions

Объект permissions.Permissions.

Возвращаемое значение

А Promise, который выполняется со значением true, если расширению теперь предоставлены все разрешения, перечисленные в аргументе permissions, или со значением false в противном случае.

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
request Да 79
55["Невозможно запросить разрешения из документа сайдбара (отчёт 1493396).", "До версии 75 разрешения не могли быть запрошены из всплывающих панелей (см. отчёт 1432083).", "До версии 61 разрешения не могли быть запрошены из страниц настроек, встроенных в about:addons (см. отчёт 1382953)."]
? Да
14["Запрос <all_urls> или *://*/* источников предоставит разрешение на запрос определённых шаблонов источников и автоматически запросит у пользователя доступ к любому посещённому веб-сайту через всплывающее окно доступа расширения в строке инструментов.", "Пользователю будет снова предложено предоставить разрешения, которые были ранее предоставлены, а затем удалены.", "Поддерживаемые разрешения будут предоставлены без запроса у пользователя. Только определённые шаблоны источников будут запрашивать у пользователя разрешение."]
? ? 102 ?
15["Запрос <all_urls> или *://*/* источников предоставит разрешение на запрос определённых шаблонов источников и автоматически запросит у пользователя доступ к любому посещённому веб-сайту через баннер расширения.", "Пользователю будет снова предложено предоставить разрешения, которые были ранее предоставлены, а затем удалены.", "Поддерживаемые разрешения будут предоставлены без запроса у пользователя. Только определённые шаблоны источников будут запрашивать у пользователя разрешение."]
?

Примеры

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

const permissionsToRequest = {
  permissions: ["bookmarks", "history"],
  origins: ["https://developer.mozilla.org/"]
}

async function requestPermissions() {

  function onResponse(response) {
    if (response) {
      console.log("Permission was granted");
    } else {
      console.log("Permission was refused");
    }
    return browser.permissions.getAll();
  }

  const response = await browser.permissions.request(permissionsToRequest);
  const currentPermissions = await onResponse(response);

  console.log(`Current permissions:`, currentPermissions);
}

document.querySelector("#request").addEventListener("click", requestPermissions);

Примеры расширений

  • разрешения

Примечание: В настоящее время существует ошибка с запросом источников и запросом разрешений на странице about:addons.

Примечание: Этот API основан на API chrome.permissions Chromium.

© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/permissions/request

Spec-Zone.ru

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