Создание тулбара для Mozilla FireFox - часть 6
Упаковываем тулбар
Для того, чтобы установить расширение в Firefox, мы должны сначала упаковать все файлы расширения. Всего нам понадобится создать 2 архива: JAR-файл и XPI-файл (кроссплатформенный инсталлятор). Не позволяйте расширениям .jar и .xpi себя одурачить: оба файла — это простые zip-архивы. Соответственно, нам понадобится какой-нибудь zip-архиватор, подойдет любой, желательно чтоб у него была поддержка командной строки.
Создаем JAR файл
Первый архив, который мы создадим — это JAR-файл расширения. Он будет содержать все наши XUL-файлы, файлы JavaScript, таблицы стилей CSS и картинки. Помните, что нужно назвать этот файл тем именем, которое вы использовали в декларации установки в разделе 2. В нашем примере это “gbltutorial.jar” (в нижнем регистре, без пробелов). Этот файл создается в директории chrome:
+- GBLTutorial/
+- install.rdf
+- chrome/
+- gbltutorial.jar
+- content/
+- contents.rdf
+- gbltutorial.xul
+- gbltutorial.js
+- skin/
+- contents.rdf
+- tut_main.gif
+- tut_combined.gif
+- tut_web.gif
+- tut_image.gif
+- tut_overlay.css
Создайте новый zip архив и добавьте в него все содержимое папки chrome. Важно, чтоб относительные пути сохранились, то есть, содержимое архива должно выглядеть вот так:
+- content/ +- contents.rdf +- gbltutorial.xul +- gbltutorial.js +- skin/ +- contents.rdf +- tut_main.gif +- tut_combined.gif +- tut_web.gif +- tut_image.gif +- tut_overlay.css
А теперь просто поменяйте расширение с .zip на .jar.
Создаем XPI файл
Второй архив, который мы создадим — это кроссплатформенный инсталлятор. Как и JAR файл, это не более, чем zip-архив. Этот файл будет содержать созданный нами JAR-файл и декларацию установки (install.rdf). Он должен располагаться в верхней папке нашего расширения:
+- GBLTutorial/
+- gbltutorial.xpi
+- install.rdf
+- chrome/
+- gbltutorial.jar
+- content/
+- contents.rdf
+- gbltutorial.xul
+- gbltutorial.js
+- skin/
+- contents.rdf
+- tut_main.gif
+- tut_combined.gif
+- tut_web.gif
+- tut_image.gif
+- tut_overlay.css
Создаем новый zip, помещаем туда jar-файл и install.rdf, меняем расширение на .xpi. Вот структура XPI-файла:
+- install.rdf +- chrome/ +- gbltutorial.jar
Устанавливаем наш тулбар
Теперь все готово для установки расширения. Запускам FireFox, выбираем Файл -> Открыть файл… (или просто жмем Ctrl+O). Находим нах XPI-файл и выбираем его. Если вы сделали все верно, появится установщик расширения. Устанавливаем, закрываем браузер, запускаем снова, любуемся нашим творением. Поздравляю, вы создали свое первое расширение для FireFox!
Тестирование и отладка тулбара
Что делать, если FireFox сломался?
Однажды с вашим расширением может случиться такая серьезная ошибка, в результате которой FireFox откажется работать. Если такое произойдет, сперва проверьте, что процесс firefox запущен и “висит”. Если так, просто убейте этот процесс. После того, как процесс остановлен, запустите Firefox в безопасном режиме. Есть несколько способов сделать это:
- Использовать ярлык “Запустить Firefox в безопасном режиме”, созданный при установке браузера. В Windows XP он расположен в Пуск -> Все программы -> Mozilla Firefox -> Mozilla Firefox (Safe Mode)
- Добавить параметр -safe-mode к уже существующему ярлыку FireFox
- Я делаю проще — жмем виндовая кнопка + R (или Пуск -> Выполнить…) и вводим команду firefox.exe -safe-mode. ИМХО так проще и быстрее —
В безопасном режиме FireFox загрузится без расширений и тем. Раз FireFox запустился, теперь вы можете открыть Инструменты -> Расширения и удалить свое сглючившее расширение. После перезапуска браузера все должно быть нормально.
Ведение лога в консоли JavaScript
Один удобный способ тестировать JavaScript код — выводить отладочные значения в консоль JavaScript, которая доступна через Инструменты -> Консоль JavaScript. Для этого нужно получить доступ к экземпляру nsIConsoleService интерфейса. Используйте следующий код:
const GBLTut_ConsoleService =
Components.
classes['@mozilla.org/consoleservice;1'].
getService(Components.interfaces.nsIConsoleService);
Обратите внимание, что я добавил префикс “GBLTut_” к имени переменной, как делал ранее с именами функций. Поскольку имена функций и переменных доступны из глобальной области видимости, они должны быть уникальными, чтобы не конфликтовать с другими расширениями. Соответственно, в своем расширении используйте в качестве префикса несколько букв имени вашего расширения. Так вот. Получив доступ к интерфейсу консоли, мы можем посылать в консоль сообщения. Следующая функция сделает все за нас:
function GBLTut_Log(aMessage)
{
GBLTut_ConsoleService.logStringMessage('My_Extension: ' + aMessage);
}
И снова функция используется с префиксом. На практике можно заменить ‘My_Extension: ‘ собственно на имя вашего расширения. Добавляя к каждому сообщению имя расширения, вы сможете быстрее найти свои сообщения среди всех прочих. Теперь мы можем просто вызвать эту функцию в любом месте, чтобы вывести отладочное сообщение:
GBLTut_Log("The value of the URL variable is: " + URL);
ВСЁ!
