Edge:使用多个大小的默认图标时,browserAction.setIcon不起作用



manifest.json以多种尺寸指定默认图标时,我无法让browser.browserAction.setIcon在Microsoft Edge中工作:

manifest.json

{
"manifest_version": 2,
"name": "test",
"version": "0.0.1",
"author": "John Doe",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": {
"19": "icon.png",
"38": "icon2.png"
}
}
}

background.js

setInterval(function() {
browser.browserAction.setIcon({
path: "testimage.png"
});
}, 2000);

没有记录错误,代码被执行,但图标没有改变。同样的代码在Chrome中运行良好。

将manifest.json更改为

"browser_action": {
"default_icon": "icon.png"
}

修复了这个问题,但如果我需要使用多个默认图标怎么办?

编辑:

不幸的是,即使是"default_icon": "icon.png"也不可用,尽管Edge很高兴地加载了扩展,但当将其提交到商店时,的验证失败了

验证失败:无效类型:字符串(预期对象)架构位置:/properties/browser_action/allOf/0/properties/default_icon/type清单位置:/browser_action/default_icon扩展清单验证失败:extension\manifest.json

MDN确实这么说:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/browser_action#Browser_compatibility

'default_icon'必须是具有显式大小的对象。

最后我得出的结论是,Edge不喜欢浏览器动作图标路径的string值,无论是在manifest.json还是在browserAction.setIcon中,它都会无声地失败,不会产生任何错误。

使其工作的一种方法是始终在manifest.json和每个browserAction.setIcon调用中设置显式大小,即使不同的大小都指向同一个图像。

manifest.json

{
"manifest_version": 2,
"name": "test",
"version": "0.0.1",
"author": "John Doe",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_icon": {
"19": "icon.png",
"38": "icon2.png"
}
}
}

background.js

browser.browserAction.setIcon({
path: {
"19": "testimage.png",
"38": "testimage.png"
});

相关内容

  • 没有找到相关文章

最新更新