Использование Add-on SDK для добавления кнопок на панели инструментов? Интеграция XUL и Add-on SDK для надстроек Firefox?

Я уже закодировал большую часть надстройки Firefox, используя API-интерфейс Add-on SDK. Теперь я обнаруживаю, что SDK Add-on может оказаться недостаточно мощным для моих целей. Мне нужны две вещи:

  • Выпадающая кнопка на панели инструментов рядом с панелью местоположений.
  • Чтобы изменить менеджер надстроек в firefox

Это действительно разочаровывает, но я не считаю, что это возможно с помощью Add-on SDK.

Прежде всего, я понимаю, что в API-интерфейсе Add-on SDK есть модуль widget. Но это только позволяет мне добавить простую иконку или ярлык в неудобную панель надстройки. Что делать, если мне нужно добавить более удобную кнопку, например, рядом с панелью местоположений Firebug или Greasemonkey? Что касается модификации менеджера надстроек в firefox, я пробовал Nickolay Ponomarev XUL с SDK Add-on без каких-либо успехов. Если кто-то знает, как это сделать, и может указать мне в правильном направлении, что было бы очень полезно (cfx init --template xul не делает ничего, что делает обычный SDK при попытке)

Ответ 1

Вы посмотрели на панель инструментов панели инструментов Эрика Вольда?

https://github.com/erikvold/toolbarbutton-jplib/

Можно получить доступ ко всем внутренним apis Firefox в SDK-модулях, требуя привилегии chrome; это просто не будет так просто, как apis с высоким уровнем аддона.

Ответ 2

Указанный выше toolbarbuttonlib-jplib больше не существует, но попробуйте toolbarwidget-jplib. Отлично работает! Полная спасательная жизнь.

Ответ 3

попробовал Nickolay Ponomarev XUL с Jetpack без каких-либо успехов. Если кто-то знает, как это сделать, и может указать мне в правильном направлении, что было бы очень полезно (cfx init -template xul не делает ничего, что делает обычный sdk при попытке)

Я очень хотел бы услышать подробное описание того, что вы пробовали, и как именно он потерпел неудачу. Я не могу ответить на вопрос в его текущей форме.

Я не считаю, что это возможно с помощью JetPack.

Вы имеете в виду использование только встроенных SDK-модулей высокого уровня. Возможно написать низкоуровневый SDK-модуль, который использует XPCOM и взаимодействует с хром-кодом непосредственно для реализации функций, которые вам нужны - после всего того, как реализованы остальные модули SDK. Если вы пройдете этот маршрут, вы потеряете обещание по совместимости с SDK, но вам придется либо включить его в SDK вверх, либо обновить его для новых версий Firefox.