Chrome 51中的Light&Dark browserAction图标

Pau*_*rks 8 google-chrome-extension

在Chrome 51中,隐身窗口现在具有黑暗的工具栏背景,而以前的版本使用浅色背景.在这两种情况下,单个16x16图像通常不可能提供良好的对比度:

IPvFoo with Light and Dark工具栏

当通过browserAction图标向用户显示信息时,扩展程序可以通过什么机制提供黑暗主题和浅色主题图标,并根据当前工具栏颜色在它们之间切换?

链接到图片扩展的源代码

Xan*_*Xan 4

目前还没有这样简单的机制,这听起来像是至少对清单提出的一个极好的功能请求。

不过,可以通过检测打开的隐身选项卡并仅替换该选项卡的浏览器操作图标来近似这一点。

var incognitoIcons = {
  19: "incognito19.png",
  38: "incognito38.png"
};

chrome.tabs.onCreated.addListener(function(tab) {
  if (tab.incognito) {
    chrome.browserAction.setIcon({
      path: incognitoIcons,
      tabId: tab.id
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

如果您使用"split" 隐身行为(非默认),您可以简单地检测到该行为并更改隐身实例的全局图标:

// Somewhere in background during initialization
if (chrome.extension.inIncognitoContext) {
  chrome.browserAction.setIcon({path: incognitoIcons});
}
Run Code Online (Sandbox Code Playgroud)

请注意,内容脚本始终可以依赖inIncognitoContext,因此如果您从它们触发浏览器操作图标更改,您可以将其传递。

显然,您可以使用imageData而不是执行此操作path,就像您的情况一样。

您可能想在使用时检查 Chrome 版本;我不知道有比这里提到的更好的方法。