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.ImageDataTypeobject. Это либо одиночный объект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