Как быстро начать и эффективно продолжить писать расширение для лисы

    Обычно цикл разработки таков:


    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 — добавлена функция импорта и что-то изменено про оверлеи.

    Это расширение работает и для других продуктов Мозиллы.
    Поделиться публикацией

    Комментарии 17

      +2
      Полезно. Делал расширение к ФФ, 50% времени ушло именно на реинсталлы и релоады. Спасибо.
        +4
        Я делал расширение для Thunderbird, реинсталлом не заморачивался, просто вносил изменения в файлы проинсталлированного расширения и перезапускал Thunderbird.
          0
          Из всех предложенных, этот способ мне нравится больше всего — так и в готовый экстеншн легко модифицировать, и действий по минимуму.
        +12
        Запаковывать в xpi не обязательно, более того, файлы расширения могут лежать где угодно, прийдется только перезапускать фф после внесения изменений, но для этого есть специальная кнопка.
          0
          Поступаю так же, если точнее, имеется hotkey на перезапуск браузера, который появился благодаря расширению MR Tech Toolkit.
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            Там достаточно просто. Сначала addoon попадает в песочницу, где тестируется и затем может быть перенес в официальное дерево. Кстати, недавно, всем авторам, кто подтверждал что их addon был совместим с третей версией фф высылали классные футболки=) У мну такая есть =)
              0
              Йолки! Мой же давно совместим. А письма не замечал :-(
                0
                А писем и не было. У них очень большой баннер висел на страничке центра разработчиков
            0
            Спасибо за скрипты. Очень замучился делать все в ручную, когда писал расширение для своих закладок :)
              0
              А на каком языке пишутся расширения для Mozilla?
                0
                а, расширение .js, ну тогда понятно )
                +6
                А почему бы не воспользоваться плагином Extension Developer — https://addons.mozilla.org/ru/firefox/addon/7434?
                Там есть сборка xpi, перезапуск chrome, консоль js для отладки и пресед «Enable debugig preferences», которая вываливает все ошибки в консоль.
                  +1
                  Кстати, для тех кто живёт с перезагрузкой, может оказаться полезной опция firefox.exe -jsconsole
                    0
                    А для мака?
                      +1
                      firefox -jsconsole ?
                        0
                        А что эта опция должна делать?

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое