您的代码基本上是一个很大的语法错误。 JavaScript 对象字面量应该是一对key: value 的列表。您不能(也不需要)在 key 部分中进行任何分配。
所以,修复仅语法错误,它将是:
// Still wrong:
chrome.browserAction.setIcon({
imageData : {
"48": "Icons/iconfavorite48x.png",
"64": "Icons/iconfavorite64x.png",
"128": "Icons/iconfavorite128x.png"
}
});
这将失败。 imageData 期望从例如 <canvas> 获得的像素数据的二进制 blob。如果要提供路径,需要使用path属性:
// Still wrong:
chrome.browserAction.setIcon({
path : {
"48": "Icons/iconfavorite48x.png",
"64": "Icons/iconfavorite64x.png",
"128": "Icons/iconfavorite128x.png"
}
});
请注意,您只能提供它期望的尺寸。如果您包含任何其他内容,它将失败。引用文档:
如果适合一个屏幕空间单位的图像像素数等于比例,则将选择大小比例 * 19 的图像。最初仅支持比例 1 和 2。
正常大小的图标是 19x19 像素;在高 DPI 屏幕上,Chrome 可能会显示 38x38 图标。
更新:由于 Chrome 已在 53 中切换到 Material Design,现在预计分别为 16x16 和 32x32。您可以提供新旧尺寸而不会出错。
所以你可以这样做:
// 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"
});
图像没有这些尺寸,如果需要,它们会被缩放;但当然最好准确一点。