Spec-Zone.ru › Web Extensions

action.setIcon()

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

Примечание: Этот API доступен в Manifest V3 или выше.

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

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

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

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

Синтаксис

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

Параметры

details

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

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

action.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 указан, и для окна установлен значок, специфичный для окна, то окно будет наследоваться глобального значка.
  • В противном случае, глобальный значок будет сброшен до значка манифеста.

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

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

Примеры

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

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

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

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

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

browser.action.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.action.onClicked.addListener(() => {
  browser.action.setIcon({imageData: getImageData()});
});

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

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

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet
setIcon 88
88["Этот вызов не сохраняется.", "Параметр imageData не принимается.", "Параметр path требуется."]
109 ? 74 Нет ? ? 109 ? Нет ?

Примечание: Этот API основан на API chrome.action 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/action/setIcon

Spec-Zone.ru

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