Создание тулбара для Mozilla FireFox - часть 6

Posted by admin on September 2nd, 2008 — Posted in Программирование, Тулбары

Упаковываем тулбар

Для того, чтобы установить расширение в 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);

ВСЁ!

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment