Причина, по которой значок каждый раз сбрасывался в состояние по умолчанию, заключается в том, что я вызывал setIcon
до загрузки вкладки и перехода в состояние "complete".
Думаю, должна быть некоторая информация об этом в документации на вкладках или на действия браузера, но я не нашел его: значок по умолчанию фактически применяется - по дизайну - к конкретную страницу после завершения ее загрузки. Я переместил вызов setIcon
в обработчик tabs.onUpdated
, и теперь пользовательский значок сохраняется.
Это противоречит моему прежнему пониманию того, что значок действия браузера устанавливается для каждой вкладки независимо от страницы, загруженной на вкладку, и ее состояния.
@KonradDzwinel любезно предоставил простое расширение для проверки случая (посмотрите на комментарии). Я изменил его скрипт background.js, чтобы продемонстрировать это поведение:
chrome.browserAction.onClicked.addListener(function(tab)
{
chrome.browserAction.setIcon({path: 'gfx/icon2.png', tabId: tab.id});
});
Чтобы воспроизвести это поведение, на любой вкладке нажмите значок действия браузера, чтобы изменить его. Затем обновите страницу. В результате значок действия браузера сбрасывается до значения по умолчанию.
Если такое поведение объясняется в какой-то документации, пожалуйста, напишите об этом в комментариях, и я обновлю ответ. Из того, что я прочитал до сих пор, я был убежден, что значок по умолчанию устанавливается для новой вкладки во время ее создания, а затем любые изменения в нем находятся исключительно под контролем расширения.
person
Stan
schedule
03.10.2012
chrome.browserAction.setIcon
, вам нужно указать некоторые подробности. Попробуйте воспроизвести вашу ошибку на моем минимальном примере. - person Konrad Dzwinel   schedule 03.10.2012