Открытость платформы и ее реализация для множества популярных
операционных систем (включая Windows, Linux и Mac OS) дает практически
любому желающему возможность создать свое собственное расширение для
этого браузера.
Но
перед тем как приступать к каким либо активным действиям, Вам будет
весьма полезно разобраться, на чем базируется платформа разработки.
Также необходимо знать или хотя бы иметь минимальное представление о
таких языках и технологиях как XML, CSS, JavaScript и DTD. Вкратце
рассмотрим те из них, которые понадобятся нам при разработке плагинов
для FireFox. XUL и CSSНаиболее заметно философия Mozilla
— «правильный инструмент для правильной работы» — проявляется в
проектировании интерфейсов для приложений. Для их создания
используется подмножество языка XML, которое носит название XUL
(произносится «зул») — XML User-interface Language. Обычно содержимое
XUL хранится в файлах с таким же расширением и может быть загружено как
из локального файла, так и из Сети. Если говорить кратко, XUL
позволяет создавать различные элементы интерфейса: кнопки, меню,
списки, элементы ввода, панели инструментов — другими словами, все те
стандартные элементы современных графических интерфейсов, которые мы
уже привыкли видеть. Если же среди стандартного набора компонен тов вы
не нашли нужный именно вам элемент или же возможности какого-либо из
них кажутся вам недостаточными, ничто не мешает исправить эту ситуацию,
воспользовавшись технологией XBL. Кроме того, внешний вид (стиль)
элементов интерфейса не ограничивается видом родных элементов
интерфейса операционной системы, а может изменяться с помощью CSS. Так,
изменив лишь стандартные стили оформления элементов браузера FireFox,
можно практически полностью преобразить внешний вид FireFox — создать
свою неповторимую тему. JavaScriptСчитается, что
JavaScript является лучшим скриптовым языком и что набор
предоставляемых им возможностей идеально подходит для работы с
элементами интерфейса. Доступ к данным элементам осуществляется с
помощью JavaScript-функции DOM, которая позволяет менять, удалять и
создавать новые свойства элементов, добавлять новые элементы к
интерфейсу, а также обрабатывать события и многое другое. Для работы
с файловой системой или базами данных, платформа разработки Mozilla,
также имеет необходимые компоненты и библиотеки. Чтобы обеспечить
высокую скорость работы, все они написаны на C++, а доступ к ним
осуществляется с помощью JavaScript-интерфейса. RDFRDF
(Resource Description Framework) — подмножество языка XML, который
столь хорошо подходит для представления данных и описания веб-ресурсов. Mozilla
использует RDF для описания файлов в локальной файловой системе, списка
закладок, адресной книги и других подобных вещей. Плагин DocMark для FireFoxПопробуем
создать свой собственный плагин FireFox (назовем его DocMark),
цель плагина — дать возможность устанавливать закладки внутри
HTML-документов и в дальнейшем перемещаться по ним. Подобный
плагин может быть полезен, к примеру, при чтении различных объемных
текстов (книг, документации), которые вы подолгу и с удовольствием
изучаете. В плагине мы реализуем лишь базовые функции: добавление новой
закладки, а также переход к уже существующей. Интерфейс плагина будет
поддерживать два языка — русский и английский, — которые будут
выбираться в зависимости от локали установленного браузера FireFox. Итак,
к сути. Любые плагины для Firefox распространяются в виде обычных
ZIP-архивов — файлов с расширением XPI, которые распознаются браузером
FireFox как установочные файлы и содержат следующие элементы:
install.rdf с данными установки, а также каталог chrome с архивом
docmark.jar. Для начала создадим каталог с названием docmark_xpi
(который в дальнейшем будет содержать все установочные файлы плагина) и
в нем файл install.rdf со следующим содержимым (пример плагина FireFox). Рассмотрим некоторые объекты этого файла более подробно:
em:id Содержит
уникальный идентификатор расширения. Для генерации такой строки
необходимо использовать утилиту guidgen (для Windows) или uuidgen (для
Unix).
em:file Содержит название
архива плагина в формате URI urn:mozilla:extension:file:<имя
файла>.jar и каталоги, в которых хранятся ресурсы плагина FireFox.
em:package — путь к основным исходным файлам плагина FireFox, em:locale
— путь к файлам локализации плагина FireFox.
em:targetApplication Описывает
приложение, в которое будет устанавливаться плагин. em:id —
идентификатор Firefox; em:minVersion, em:maxVersion — минимальная и
максимальная версии приложения. Исходные тексты плагина FireFoxСоздадим второй каталог с названием docmark_jar, который будет содержать исходные файлы нашего плагина FireFox. Структура подкаталогов в нем получается достаточно сложная, поэтому покажем и опишем ее заранее: docmark_jar ѕ content ѕ docmark ѕ about.xul ѕ contents.rdf ѕ docmark.js ѕ docmark.xul ѕ locale ѕ en-US ѕ docmark ѕ contents.rdf ѕ docmark.dtd ѕ docmark.properties ѕ ru-RU ѕ docmark ѕ contents.rdf ѕ docmark.dtd ѕ docmark.properties Каталог
«content» содержит специальный подкаталог, в котором хранятся файлы
формата XUL и JavaScript. Файлы contents.rdf содержат информацию для
браузера FireFox о том, где и какие файлы хранятся и используются.
Каталог «locale» хранит перевод интерфейса на различные языки, в нашем
случае — на английский и русский: docmark.dtd используется в файлах
XUL, а docmark.properties — в JavaScript. Файл contents.rdf из каталога
«content/docmark» выглядит следующим образом: <?xml version=«1.0»?> <RDF xmlns=«http://www.w3.org/1999/02/22-rdf-syntax-ns#» xmlns:chrome=«http://www.mozilla.org/rdf/chrome#»> <Seq about=«urn:mozilla:package:root»> <li resource=«urn:mozilla:package:docmark»/> </Seq> <Seq about=«urn:mozilla:overlays»> <li resource=«chrome://browser/content/browser.xul»/> <li resource=«chrome://navigator/content/navigator.xul»/> </Seq> <Seq about=«chrome://browser/content/browser.xul»> <li>chrome://docmark/content/docmark.xul</li> </Seq> <Seq about=«chrome://navigator/content/navigator.xul»> <li>chrome://docmark/content/docmark.xul</li> </Seq> <Description about=«urn:mozilla:package:docmark» chrome:displayName=«DocMark 0.1» chrome:author=«Alexander Ermolaev» chrome:name=«docmark» chrome:extension=«true» /> </RDF> Обратите
ваше внимание на строку «chrome://browser/content/browser.xul». Она
представляет собой ссылку на интерфейс браузера, к которому мы
планируем подключать новый плагин. Еще одна ссылка,
«chrome://navigator/content/navigator.xul», используется для других
браузеров на основе платформы Mozilla: Netscape и, собственно, самого
браузера Mozilla. Интерфейс плагина FireFoxБольшая часть
работы с нашим плагином будет осуществляться через основное меню
браузера. Для добавления закладки мы будем использовать стандартное
окно запроса на JavaScript, которое будет вызываться с помощью функции
«prompt». Создадим файл docmark.xul со следующим содержанием (пример плагина FireFox). Объект
«overlay» говорит о том, что мы будем добавлять необходимые элементы
интерфейса к интерфейсу браузера. Тег «keyset» задает набор горячих
клавиш, с помощью которых можно вызывать соответствующие команды. Далее
следует меню «menubar», атрибут «id» которого (со значением
«main-menubar») говорит о том, что наше меню будет подключено к
основному меню браузера. Если необходимо, вы можете подключить
созданное меню к любому другому меню браузера, например к меню
«Инструменты». Для этого используйте «id=«menu_ToolsPopup»». Тег
«menupopup» создает выпадающее меню, в которое мы будем добавлять наши
закладки. Файл about.xul создает диалоговое окно, которое в дальнейшем
будет вызываться по команде «docmark_about()». Содержимое файла может
выглядеть примерно следующим образом: <?xml version=«1.0»?> <?xml-stylesheet href=«chrome://global/skin/» type=«text/css»?> <!DOCTYPE overlay SYSTEM «chrome://docmark/locale/docmark.dtd»> <dialog
buttons=«accept» id=«docmarkaboutdialog» title=«&docmark.about;»
xmlns=«http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul»> <description>DocMark 0.1</description> </dialog> Локализация плагина FireFoxОбратите
внимание на строки «&docmark.name;» — ссылки на переводы строк,
которые находятся в локализационных файлах в формате DTD, подключаемых
в приложение с помощью конструкции: <!DOCTYPE overlay SYSTEM «chrome://docmark/locale/docmark.dtd»> Файл русской локализации docmark.dtd выглядит следующим образом: <!ENTITY docmark.name «DocMark»> <!ENTITY docmark.add «Добавить закладку...»> <!ENTITY docmark.about «О расширении»> <!ENTITY docmark.name.key «D»> <!ENTITY docmark.add.key «Д»> <!ENTITY docmark.about.key «О»> <!ENTITY docmark.mark.key «M»> Файл
docmark.properties нужен, чтобы иметь доступ к переводам из JavaScript.
Он выглядит проще, чем docmark.dtd: строки состоят из ключа и его
значения и разделяются знаком «=». Файл подключается в docmark.xul с
помощью строки: <stringbundle id=«docmark-string-bundle» src=«chrome://docmark/locale/docmark.properties»/> Доступ к строкам может осуществляться с помощью нескольких функций: «getString(key)» — получить простую строку по заданному ключу «key»; «getFormattedString(key, array)» — получить строку, в которой заменяются вхождения «%S» на элементы из массива «array». Содержимое файла docmark.properties выглядит следующим образом: docmarkMarkTitle=Закладка номер %S Осталось лишь написать файл contents.rdf (пример плагина FireFox). По
аналогии с приведенными выше файлами вы можете самостоятельно создать
каталог «en-US» с английской локализацией, заменить все вхождения
«ru-RU» на «en-US» и сделать переводы строк. Исполняемый код плагина FireFoxОбработка
действий пользователя и выполнение определенных команд заключены в
программу на JavaScript. Содержимое файла docmark.js (пример плагина FireFox). Сборка архива плагина FireFoxТеперь
мы имеем все исходные файлы для сборки архива расширения.
Воспользуйтесь ZIP-архиватором и создайте архив docmark.jar с
содержимым каталога docmark_jar. Упаковку необходимо проводить с включенной опцией сохранения пути к файлам архива. Сборка установочного файла плагина FireFoxСоздайте
в каталоге docmark_xpi подкаталог chrome и скопируйте в него файл
docmark.jar. Теперь точно так же упакуйте все содержимое каталога
docmark_xpi в архив docmark.xpi. Установка плагина FireFoxОткройте
каталог с docmark.xpi в Firefox, найдите его в списке и щелкните по
нему левой клавишей мыши. После этого запустится процедура установки
плагина. Как только операция будет завершена, потребуется
перезагрузить браузер, после чего станет возможным использование
созданного нами плагина. Поздравляю, теперь Вы обладаете базовыми знаниями по созданию собственных плагинов для браузера FireFox.
Более подробную информацию о формате XUL и разработке приложений (плагинов) для FireFox Вы можете найти на здесь .
Источник: http://www.ironhorse.ru |