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

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

该图标闪烁一会儿,然后变回默认图标。活动选项卡及其 id 传递到 setIcon 在整个过程中保持不变。

有人可以提出为什么会发生这种情况的想法吗?

有帮助吗?

解决方案

之所以每次图标都重置为默认状态是因为我调用了 setIcon tab完成加载并获取 “完全的” 状态。

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

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

@KonradDzwinel 好心提供了一个简单的扩展来测试案例(查看评论)。我改变了它的 背景.js 演示此行为的脚本:

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top