为什么chrome.browserAction.setIcon方法不起作用?

zfciruhq  于 2023-08-01  发布在  Go
关注(0)|答案(4)|浏览(172)

我正在查看文档页面,但我无法找出代码中的错误:

chrome.browserAction.setIcon({
  details.imageData = {
    "48": "Icons/iconfavorite48x.png",
    "64": "Icons/iconfavorite64x.png",
    "128": "Icons/iconfavorite128x.png"
  }
});

字符串
该documentaion说:
请注意,'details.imageData = foo'等效于'details.imageData =' 19 ':foo}'
所以我非常困惑

d7v8vwbk

d7v8vwbk1#

你的代码基本上是一个很大的语法错误。JavaScript对象文字应该是key: value对的列表。在key部分中不能(也不需要)进行任何赋值。
所以,只修复 * 语法错误,它将是:

// Still wrong:
chrome.browserAction.setIcon({
  imageData : {
    "48": "Icons/iconfavorite48x.png",
    "64": "Icons/iconfavorite64x.png",
    "128": "Icons/iconfavorite128x.png"
  }
});

字符串
这将失败。imageData期望例如从<canvas>获得的像素数据的二进制斑点。如果要提供路径,则需要使用path属性:

// Still wrong:
chrome.browserAction.setIcon({
  path : {
    "48": "Icons/iconfavorite48x.png",
    "64": "Icons/iconfavorite64x.png",
    "128": "Icons/iconfavorite128x.png"
  }
});


请注意,您只能提供它期望的大小。如果你包括任何其他的,它将失败。引用文档:
如果适合一个屏幕空间单位的图像像素数等于比例,则将选择尺寸比例 * 19的图像。最初只支持1和2级。
正常大小的图标是19 x19像素;在高DPI屏幕上,Chrome可能会显示38 x38图标。

更新:由于Chrome在53年切换到Material Design,现在分别需要16 x16和32 x32。您可以提供旧尺寸和新尺寸而不会出错。

所以你可以这样做:

// Correct
chrome.browserAction.setIcon({
  path : {
    "19": "Icons/iconfavorite19x.png",
    "38": "Icons/iconfavorite38x.png"
  }
});

// Also correct
chrome.browserAction.setIcon({
  path : {
    "19": "Icons/iconfavorite19x.png"
  }
});

// Also correct
chrome.browserAction.setIcon({
  path : "Icons/iconfavorite19x.png"
});


图像不需要有这些尺寸,如果需要的话,它们会被缩放;但最好是准确的

k5hmc34c

k5hmc34c2#

对于manifest version 3,必须使用chrome.action.setIcon,而不是chrome.browserAction.setIcon
例如,单独文件夹中的灰色图像:

chrome.action.setIcon({
        path: {
            "16": "/icons/gray/icon16.png",
            "19": "/icons/gray/icon19.png",
            "32": "/icons/gray/icon32.png",
            "48": "/icons/gray/icon48.png",
            "128": "/icons/gray/icon128.png"
        }
    });

字符串
或者,如果不是问题的一部分,可以通过setBadgeText解决:
state * 是我自己的变量。*

chrome.action.setBadgeText({
  text: (state ? 'off' : '')
});

chrome.action.setBadgeBackgroundColor({
  color: '#2f2f2f'
});

nom7f22z

nom7f22z3#

在Chrome V3中使用

chrome.action.setIcon({ path: "media/background1.png" });

字符串

tvmytwxo

tvmytwxo4#

在v3中使用:在清单中使用"icons"记住图标对象有键值对,其中key定义图标的大小,value是图标的路径。

chrome.action.setIcon({
    path : {
      "19": "images/icon-19.png"
    }
});

字符串

相关问题