изменение значков кнопок панели инструментов Firefox addon sdk во время выполнения

Я использую библиотеку кнопок панели инструментов, потому что обычные виджеты не сохранят свои позиции, если я перезапущу Firefox. К сожалению, я хочу изменить значок во время выполнения. С виджетами я сделал:

widget.contentURL = "http://127.0.0.1:8082/static/icons/eth_16.png";

С помощью кнопок панели инструментов я пробовал:

Toolbarbutton.image = "http://127.0.0.1:8082/static/icons/eth_16.png";

без всякого эффекта. Изображение, похоже, используется только при создании кнопки панели инструментов.

Также пытался уничтожить и воссоздать кнопку с другим значком, но это вызывает раздражающее мерцание.

Любая идея будет оценена.


person Franz657587    schedule 13.02.2012    source источник
comment
Какую библиотеку кнопок панели инструментов вы используете?   -  person therealjeffg    schedule 13.02.2012
comment
Я использую библиотеку Эрика Волдса. github.com/voldsoftware/toolbarbutton-jplib   -  person Franz657587    schedule 14.02.2012
comment
Это может быть ограничением библиотеки — вы не думали связаться с Эриком напрямую?   -  person therealjeffg    schedule 15.02.2012


Ответы (1)


Я сделал быстрый тест, и это должно работать так, как ожидалось, поэтому я не уверен, с какой проблемой вы здесь столкнулись. Вот пример кода, который отлично работает:

var toolbarbutton = require("toolbarbutton");
var timer = require("timer");

var TEST_ICON_M_URL = "http://www.mozilla.org/media/img/favicon.png";
var TEST_ICON_G_URL = "http://www.google.com//images/google_favicon_128.png";
console.log("TEST_ICON_URL", TEST_ICON_M_URL);

var options = {
  id: "test-tbb",
  label: "TEST BUTTON",
  toolbarID: "nav-bar",
  image: TEST_ICON_M_URL,
  forceMove: true
};

var tbb = toolbarbutton.ToolbarButton(options);
tbb.moveTo(options);

timer.setTimeout(function () {
  tbb.image = TEST_ICON_G_URL;
  console.log("switched", TEST_ICON_G_URL);
}, 5 * 1000); // 5 seconds

Есть ли еще код, который вы могли бы опубликовать? Проблема должна быть где-то в другом.

person Bryan Clark    schedule 02.10.2012