browserAction.setIcon()
Устанавливает значок для действия браузера.
Вы можете указать один значок как путь к файлу изображения или объект browserAction.ImageDataType.
Вы можете указать несколько значков разных размеров, предоставив словарь, содержащий несколько путей или объекты ImageData. Это означает, что значок не нужно масштабировать для устройства с другой плотностью пикселей.
Вкладки без определённого значка унаследуют глобальный значок, по умолчанию указанный в default_icon в манифесте.
Это асинхронная функция, которая возвращает Promise.
Синтаксис
let settingIcon = browser.browserAction.setIcon( details // object )
Параметры
details-
object. Объект, содержащий свойстваimageDataилиpath, и необязательно свойствоtabId.-
imageDataНеобязательно -
илиbrowserAction.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указан, и у окна установлен значок, специфичный для окна, то окно унаследует глобальный значок. - В противном случае глобальный значок будет сброшен до значка из манифеста.
Значение возврата
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 обязателен."] |
4545–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", }); });
Примеры расширений
Примечание: Этот 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