Spec-Zone.ru › Web Extensions

set()

Используйте BrowserSetting.set() для изменения настроек браузера на новое значение.

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

  • Некоторые настройки заблокированы, поэтому расширения не могут их изменять вообще
  • Если несколько расширений пытаются изменить одну и ту же настройку, расширениям присваивается порядок приоритета в зависимости от времени их установки. Расширения, установленные позже, имеют приоритет над расширениями, установленных ранее.

Это означает, что если расширение X пытается изменить настройку:

  1. Если настройка заблокирована, то настройка не изменяется. Однако изменение X запоминается и хранится в очереди, упорядоченной по приоритету X относительно других расширений, которые пытались изменить настройку. Если настройка будет разблокирована позже, первое расширение в очереди сможет изменить настройку.
  2. В противном случае, если никакое другое расширение ещё не изменило настройку, X успешно изменяет настройку и считается, что «управляет» настройкой.
  3. В противном случае, если расширение Y с более низким приоритетом уже изменило настройку, X успешно изменяет настройку и теперь управляет настройкой. Однако изменение Y запоминается и хранится в очереди в порядке приоритета. Если X впоследствии очистит своё значение или X будет отключено или удалено, первое расширение в очереди сможет внести своё изменение в настройку.
  4. В противном случае, если расширение Z с более высоким приоритетом уже изменило настройку, X не сможет изменить настройку, но его изменение добавится в очередь. Если Z впоследствии очистит своё значение или Z будет отключено или удалено, первое расширение в очереди сможет внести своё изменение в настройку.

Расширение может определить, какой из этих сценариев применим, проверив свойство «levelOfControl», возвращаемое вызовом BrowserSetting.get().

Метод BrowserSetting.set() возвращает Promise, который разрешается булевым значением: если попытка изменить настройку фактически привела к изменению настройки (сценарии 2 и 3 выше), булево значение равно true; в противном случае оно равно false.

Синтаксис

let setting = setting.set(
  details     // object
)

Параметры

details

Объект, который должен содержать следующее свойство:

value

any. Значение, на которое вы хотите изменить настройку. Его тип зависит от конкретной настройки.

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

A Promise, который будет выполнен с булевым значением: true если настройка была изменена, false в противном случае (например, потому что расширение не контролировало настройку).

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

Пример

Изменение настройки hyperlinkAuditingEnabled (требуется разрешение «privacy»):

function onSet(result) {
  if (result) {
    console.log("Value was updated");
  } else {
    console.log("Value was not updated");
  }
}

browser.browserAction.onClicked.addListener(() => {

    let setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({
      value: false
    });
    setting.then(onSet);

});

Примечание:

Этот API основан на API chrome.types 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/types/BrowserSetting/set

Spec-Zone.ru

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