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"
});