4

Chrome 中的浏览器操作图标有一个奇怪的问题。清单中定义了浏览器操作的默认图标。图标显示正确。然后在后台页面中,在某些条件下,我调用:

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

此图标闪烁片刻,然后变回默认图标。活动选项卡及其 id 传递以setIcon在所有过程中保持不变。

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

4

1 回答 1

7

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

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

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

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

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

要重现此行为,请在任何选项卡上按浏览器操作图标进行更改。然后刷新页面。结果,浏览器操作图标重置为默认值。

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

于 2012-10-03T17:35:19.400 回答