Edge:browserAction.setIcon 在使用多种尺寸的默认图标时不起作用
Edge: browserAction.setIcon not working when using a default icon with multiple sizes
当 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 很乐意加载扩展,但在将其提交到商店时,验证失败并显示
Validation failed: Invalid type: string (expected object)
Schema location: /properties/browser_action/allOf/0/properties/default_icon/type
Manifest location: /browser_action/default_icon
Validation failed for extension manifest: Extension\manifest.json
这确实是 MDN 所说的:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/browser_action#Browser_compatibility
'default_icon' must be an object, with explicit sizes.
最后我得出的结论是 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"
});
当 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 很乐意加载扩展,但在将其提交到商店时,验证失败并显示
Validation failed: Invalid type: string (expected object) Schema location: /properties/browser_action/allOf/0/properties/default_icon/type Manifest location: /browser_action/default_icon Validation failed for extension manifest: Extension\manifest.json
这确实是 MDN 所说的:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/browser_action#Browser_compatibility
'default_icon' must be an object, with explicit sizes.
最后我得出的结论是 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"
});