2015-04-21 3 views
2

Я использую mozilla-addon-sdk и инструмент cfx для создания расширения Firefox.расширение firefox не отображается в любом меню, но, кажется, установлено

Расширение показывает только ту кнопку переключения, которая обычно отображается в меню панели инструментов.

Все работает хорошо, когда я запускаю расширение с помощью этой команды:

$ cfx run 

Но если я сгенерировать файл XPI так:

$ cfx xpi 

и попытаться установить мое расширение вручную из этого файл, даже если firefox сообщает мне, что установка в порядке, я не вижу его ни в одной панели инструментов/меню. Однако расширение указано в списке модулей 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}); 
} 
+2

Без кода этот вопрос может быть не по теме: вопросы, требующие помощи по отладке («** почему этот код не работает так, как я хочу? **)) должны включать: • желаемое поведение, • конкретную проблему или ошибки * и * • кратчайший код, необходимый для его воспроизведения ** в самом вопросе **. Вопросы без ** ясного заявления о проблеме ** не полезны для других читателей. См.: [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve), [о каких темах я могу спросить здесь?] (Http://stackoverflow.com/help/ по-теме) и [спросить]. – Makyen

+0

Согласитесь с @Makyen, предоставьте код, чтобы мы могли вам помочь. – dgil

+0

Пожалуйста, добавьте код, как @Makyen сказал – matagus

ответ

4

Вы должны указать значок размером 16 и 32 для вашей кнопки:

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

Наслаждайтесь!

Смежные вопросы