firefox 扩展没有出现在任何菜单中,但似乎已安装

firefox extension not showing up in any menu but seems to be installed

我正在使用 mozilla-addon-sdk 和 cfx 工具构建 firefox 扩展。

扩展只显示一个切换按钮,通常出现在工具栏菜单中。

当我使用此命令启动扩展程序时一切正常:

$ cfx run

但是如果我生成这样的 xpi 文件:

$ cfx xpi

并尝试从此文件手动安装我的扩展程序,即使 firefox 告诉我安装正常,我也无法在任何 toolbar/menu 中看到它。但是,该扩展已在 firefox 模块列表中报告。

我在商店发布了它,但问题仍然存在,无法从任何菜单访问它。

我在想 xpi 代出了什么问题,但我找不到什么。

我还想也许我应该添加一些代码来自动将切换按钮放在工具栏的某个位置,但我找不到任何解决我的问题的方法。即使我的扩展程序应该使用一些额外的代码将自己放在工具栏中,为什么当来自 cfx 的 运行 时它仍然有效?

有什么想法吗?

[更新]这是我使用的代码。

manifest.json :

{
  "name": "firefox-extension",
  "title": "...",
  "id": "...",
  "description": "...",
  "icon": "data/my-icon.png",
  "author": "...",
  "license": "MPL 2.0",
  "version": "0.1"
}

main.js:

var { ToggleButton } = require('sdk/ui/button/toggle');
var panels = require("sdk/panel");
var self = require("sdk/self");
var tabs = require("sdk/tabs");

var button = ToggleButton({
 id: "extension-button",
 label: "extension",
 icon: {
   "48": "./my-icon.png"
 },
 onChange: handleChange
});

function handleChange(state) {
 if (state.checked) {
   var panel = panels.Panel({
     contentURL: self.data.url("http://my_url"),
     onHide: handleHide,
     width: 600,
     height: 600
   });

   panel.show({
     position: button
   });
 }
}

function handleHide() {
 button.state('window', {checked: false});
}

您需要为您的按钮指定图标大小 16 和 32 :

  icon: {
    "16": "./icon-16.png",
    "32": "./icon-32.png",
    "48": "./icon-48.png"
  },

尽情享受吧!