Обычно цикл разработки таков:
1) вносим изменение в исходники,
2) перепаковываем исходники в *.xpi (скриптами),
3) переключаемся на лису,
4) Ctrl+O, выбираем полученный выше *.xpi,
5) появляется диалог установки, ждём 4 секунды,
6) жмём «Install»,
7) потом «Restart Firefox» и смотрим что изменилось.
Стало страшно? Тогда…
userChrome.js
Единожды:
— устанавливаем расширение userChrome.js
— запускаем лису (единственный раз)
— в лисьем профиле наполняем файл
chrome/userChrome.js
первоначальным содержимым, например таким:// Шайтан-строка! Пока что всё делаем после неё :-)
if (location != "chrome://browser/content/browser.xul") throw "stop";
// Браузер готов. Нет необходимости вешать первоначальный
// листенер 'load' на window, как это делается в норамльных
// расширениях. Просто начинаем работать.
// Добавляем обработчик на клик мыши по таббару
getBrowser().mTabContainer.addEventListener(
'click',
function(event) { alert('clckkkkkkkkkkkkk!') },
false
)
И вот как выглядит цикл разработки теперь
1) вносим изменения в код userChrome.js,
2) в лисе открываем новое окно, смотрим что изменилось (все изменения касаются только новых окон).
Разница налицо.
Конечно, с перерастанием в обычный *.xpi, разработка будет уже не так легка, зато старт быстрый!
Полезности
Неплохо бы запастись расширением Console2 и настроить ей так, чтобы сама выскакивала наверх при ошибках.
Существует ещё ответвление, userChromeJS — добавлена функция импорта и что-то изменено про оверлеи.
Это расширение работает и для других продуктов Мозиллы.