Я пытаюсь разработать расширение firefox, которое вставляет дополнительные поля заголовка HTTP в исходящие HTTP-запросы (для взаимодействия с расширением apache, которое я одновременно разрабатываю).
Хотя я понимаю отдельные компоненты расширения и основные учебные пособия, представленные в Интернете, мне трудно перейти от расширений учебного пособия «Hello World» к разработке полноценного расширения.
Пример кода, который я хочу адаптировать для своих целей, представлен внизу Установка заголовков HTTP-запросов.
Мне интересно, где в иерархии расширений должен быть размещен этот код и как такой код вызывается / создается / активируется, будет ли он запускаться автоматически при инициализации расширения?
Заранее спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для базового расширения вы должны поместить свой код в каталог chrome / content расширения. Вы можете подключить этот контент к Firefox, используя наложение. Хотя оверлеи обычно представляют собой контент xul (кнопки и т. д.), Они могут быть чем угодно. Включая тег скрипта, который будет запускать ваш код Javascript.
Этот код является компонентом XPCOM и входит в файл components/<some name>.js.
Вам следует ознакомиться с компонентами XPCOM, если вы хотите покопаться, но да, файлы .js в components загружаются при запуске. Такие файлы содержат регистрационный код (начинается со строки var myModule = { в этом примере), который сообщает Firefox, доступен ли компонент, определенный в файле, по запросу или должен быть создан автоматически.
В этом примере вы можете увидеть, как компонент регистрируется для получения уведомления о запуске приложения:
catMgr.addCategoryEntry("app-startup", this.myName, this.myProgID, true, true);
и при обработке уведомления о запуске приложения он регистрируется для уведомления http-on-modify-request:
os.addObserver(this, "http-on-modify-request", false);
Вы пытались найти существующее расширение, которое точно соответствует тому, чего вы пытаетесь достичь? Может быть, начало ...