为什么在应用自定义图标后会再次出现浏览器操作默认图标?

时间:2012-10-03 13:56:03

标签: google-chrome-extension browser-action

Chrome中的浏览器操作图标出现了一个奇怪的问题。清单中定义了浏览器操作的默认图标。图标显示正确。然后在后台页面中,在某些情况下,我打电话:

chrome.browserAction.setIcon({path:"green_32.png", tabId:request.tabId});

此图标闪烁片刻,然后更改回默认图标。传递给setIcon的活动选项卡及其ID在整个过程中保持不变。

有人可以提出一个想法,为什么会发生这种情况?

1 个答案:

答案 0 :(得分:6)

每次将图标重置为默认状态的原因是因为我在选项卡完成加载之前调用setIcon 并获得“完整”状态。

我想在tabsbrowser actions上的文档中应该有关于此的一些信息,但我没有找到它:默认图标实际上是按照设计应用于特定的完成加载后的页面。我将调用setIcon移到tabs.onUpdated处理程序中,现在自定义图标仍然存在。

这与我之前的理解相矛盾,即浏览器操作图标是基于每个选项卡设置的,与加载到选项卡中的页面及其状态无关。

@KonradDzwinel亲切地提供了一个简单的扩展来测试这个案例(看一下评论)。我更改了 background.js 脚本来演示此行为:

chrome.browserAction.onClicked.addListener(function(tab)
{
  chrome.browserAction.setIcon({path: 'gfx/icon2.png', tabId: tab.id});
});

要重现此行为,请在任何标签上按浏览器操作图标以将其更改。然后刷新页面。因此,浏览器操作图标会重置为默认值。

如果在某些文档中解释了这种行为,请在评论中写下这些,我会更新答案。根据我到目前为止所读到的内容,我确信在创建时为新选项卡设置了默认图标,然后对其进行的任何更改都完全受扩展控制。