2

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

清单.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"
    }
  }
}

背景.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' 必须是一个具有明确大小的对象。

4

1 回答 1

0

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

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

清单.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"
    }
  }
}

背景.js

browser.browserAction.setIcon({
    path: {
      "19": "testimage.png",
      "38": "testimage.png"
});
于 2017-11-16T10:44:16.407 回答