Spec-Zone.ru › Web Extensions

browserAction.setIcon()

Устанавливает значок для действия браузера.

Вы можете указать один значок как путь к файлу изображения или объект browserAction.ImageDataType.

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

Вкладки без определённого значка унаследуют глобальный значок, по умолчанию указанный в default_icon в манифесте.

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

Синтаксис

let settingIcon = browser.browserAction.setIcon(
  details         // object
)

Параметры

details

object. Объект, содержащий свойства imageData или path, и необязательно свойство tabId.

imageData Необязательно

browserAction.ImageDataType или object. Это либо один объект ImageData, либо объект-словарь.

Используйте объект-словарь для указания нескольких объектов ImageData разных размеров, чтобы значок не нужно было масштабировать для устройств с различной плотностью пикселей. Если imageData является словарем, значение каждого свойства — это объект ImageData, а его имя — это размер, примерно так:

{
  16: image16,
  32: image32
}

Браузер выберет изображение в зависимости от плотности пикселей экрана. Подробнее о выборе размеров значков см. в разделе Выбор размеров значков.

path Необязательно

string или object. Это либо относительный путь к файлу значка, либо это объект-словарь.

Используйте объект-словарь для указания нескольких файлов значков разных размеров, чтобы значок не нужно было масштабировать для устройств с различной плотностью пикселей. Если path является словарем, значение каждого свойства — это относительный путь, а его имя — это размер, примерно так:

{
  16: "path/to/image16.jpg",
  32: "path/to/image32.jpg"
}

Браузер выберет изображение в зависимости от плотности пикселей экрана. Подробнее о выборе размеров значков см. в разделе Выбор размеров значков.

tabId Необязательно

integer. Устанавливает значок только для указанной вкладки. Значок сбрасывается, когда пользователь переходит по этой вкладке на новую страницу.

windowId Необязательно

integer. Устанавливает значок для данного окна.

  • Если windowId и tabId оба указаны, функция завершается ошибкой, и значок не устанавливается.
  • Если windowId и tabId оба отсутствуют, устанавливается глобальный значок.

Если каждый из imageData и path является одним из undefined, null или пустым объектом:

  • Если tabId указан, и у вкладки установлен значок, специфичный для вкладки, то вкладка унаследует значок от окна, к которому она принадлежит.
  • Если windowId указан, и у окна установлен значок, специфичный для окна, то окно унаследует глобальный значок.
  • В противном случае глобальный значок будет сброшен до значка из манифеста.

Значение возврата

A Promise, который будет выполнен без аргументов, как только значок будет установлен.

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet
setIcon
ДаДо Chrome 23, path не мог указать несколько файлов значков, а должен был быть строкой, указывающей один путь к значку.
14["Этот вызов не сохраняется.", "Параметр imageData не принимается.", "Параметр path обязателен."]
45
45–58Значки, специфичные для вкладки, не очищаются при загрузке новой страницы.
? 15 14 ? ? 79 ? 15 ?
details_windowId_parameter Нет Нет 62 ? Нет Нет ? ? 79 ? Нет ?
imageData 23 79 45 ? 15 14 ? ? 79 ? 15 ?
null Нет Нет 59 ? Нет 14 ? ? 79 ? 15 ?

Примеры

В приведенном ниже коде используется действие браузера для переключения слушателя для webRequest.onHeadersReceived и используется setIcon() для указания, включено ли прослушивание:

function logResponseHeaders(requestDetails) {
  console.log(requestDetails);
}

function startListening() {
  browser.webRequest.onHeadersReceived.addListener(
    logResponseHeaders,
    { urls: ["<all_urls>"] },
    ["responseHeaders"]
  );
  browser.browserAction.setIcon({ path: "icons/listening-on.svg" });
}

function stopListening() {
  browser.webRequest.onHeadersReceived.removeListener(logResponseHeaders);
  browser.browserAction.setIcon({ path: "icons/listening-off.svg" });
}

function toggleListener() {
  if (browser.webRequest.onHeadersReceived.hasListener(logResponseHeaders)) {
    stopListening();
  } else {
    startListening();
  }
}

browser.browserAction.onClicked.addListener(toggleListener);

В приведенном ниже коде значок устанавливается с помощью объекта ImageData:

function getImageData() {
  let canvas = document.createElement("canvas");
  let ctx = canvas.getContext("2d");

  ctx.fillStyle = "green";
  ctx.fillRect(10, 10, 100, 100);

  return ctx.getImageData(50, 50, 100, 100);
}

browser.browserAction.onClicked.addListener(() => {
  browser.browserAction.setIcon({ imageData: getImageData() });
});

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

browser.browserAction.onClicked.addListener((tab) => {
  browser.browserAction.setIcon({
    tabId: tab.id,
    path: "icons/updated-48.png",
  });
});

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

  • bookmark-it

Примечание: Этот API основан на API chrome.browserAction Chromium. Эта документация взята из browser_action.json в коде 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/browserAction/setIcon

Spec-Zone.ru

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