Вот нисходящий ответ (большинство других снизу вверх):
Firefox - это приложение XUL (см. Также: XUL ); XUL - это вариант XML, используемый для описания графического интерфейса пользователя, который интерпретируется средством визуализации, во многом так же, как HTML отображается в браузере, но XUL включает в себя меню браузера, кнопки, строку состояния, сочетания клавиш и т. Д. Это довольно аккуратно ; Мне удалось собрать несколько простых приложений с графическим интерфейсом намного быстрее в XUL, чем в других средах (и это не зависит от платформы!).
Если вы загляните в каталог приложения Firefox (где бы вы ни устанавливали его в вашей системе), вы увидите каталог «chrome» с кучей файлов .jar. Это просто ZIP-файлы с определенной структурой (включая манифест), и вы можете просмотреть их самостоятельно.
Большая часть браузера Firefox на самом деле XUL + Javascript. Он использует много библиотек нижнего уровня, написанных на C ++ и доступных для Javascript через XPCOM, но если вы хотите понять (и изменить) поведение более высокого уровня, вероятно, стоит начать с частей JULascript XUL +.
редактировать: стр.с. Вот некоторые учебники / ссылки для XUL: 1 2 , а также книга O'Reilly
edit: XUL-документы очень похожи на HTML-документы (только больше!) В том, как они взаимодействуют с событиями user +. Существует модель документа для , динамически модифицирующего XUL, и есть модели событий , которые имеют прослушиватели событий. Оба действуют так же, как HTML + DOM + его модель событий, но с более богатым набором встроенных объектов / интерфейсов / событий / и т. Д. Обработчики событий являются интерфейсами определенного рода и могут быть реализованы объектами Javascript (объявленными в XUL с onclick="blah()"
или добавленными динамически через вызовы Javascript к addEventListener()
- оба имеют тот же синтаксис, что и события HTML в Firefox ) или C ++ или другими языками, которые могут реализовать объекты XPCOM с соответствующими интерфейсами.