Написання розширення під firefox

Найвідомішими і використовуваними з доповнень Firefox є розширення (або аддони, англ. Add-on) і теми. У цій статті ми розбираємо розширення. Mozilla надала розробникам розширень широкий простір для дій - весь браузер, отримати доступ можна практично до будь-якого елементу браузера, саме тому всі розширення в магазині addons.mozilla.org проходять сувору модерацію - задіяні не тільки валідатори, а й живі люди, які при необхідності зв'язуються з Вами по email, тому, якщо Ви захочете поділитися розширенням, Вам знадобиться хоча б мінімальне знання англійської мови.

Саме розширення вдає із себе zip-архів з розширенням xpi. У нього своя структура, свої стандарти і звичаї, з якими Ви з часом ознайомитеся.

Крок 0 - Підготовка.

Якщо Ви використовуєте вогнелис як браузер за замовчуванням, то Вам, напевно, не захочеться захаращувати його незакінченими тестовими розширеннями, хоч і своїми. Якщо для Вас це не критично, то пропустіть крок 0.0.

Крок 0.0 - Створення нового профілю.

Створення нового профілю - це просто. Щоб викликати вікно роботи профілями потрібно виконати (Firefox повинен бути закритий):

Start -> Run "% ProgramFiles% \ Mozilla Firefox \ firefox.exe" -no-remote -P dev
або
firefox -P

Start -> Run "% ProgramFiles (x86)% \ Mozilla Firefox \ firefox.exe" -no-remote -P dev
або
firefox -P

Ubuntu і багато інших Linux-дистрибутиви:

/ Usr / bin / firefox -no-remote -P dev
або
firefox -P

Решта Linux / Unix дистрибутиви:

/ Usr / local / bin / firefox -no-remote -P dev

MacOS 10.6 і новіше:

/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev

MacOS 10.5 і старше:

arch -arch i386 /Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev

Створення нового профілю ніяких складнощів не обіцяє, так що докладно зупинятися на ньому не буду. Нагадаю лише, що при роботі з реальним проектом (відноситься до будь-якого проекту) обов'язково робіть бекапи. Папку, зазначену при створенні профілю, умовно назвемо цю папку dev_folder а профіль dev_profile. Після першого завантаження цього профілю папка заповниться файлами з усіма дефолтними настройками.

Крок 0.1 - Робимо зародок додатки.

Приступаємо до створення. Якщо Вам ліньки створювати цю структуру, можете скачати цей архів (цей) і розпакувати, якщо ж не лінь, то створюємо папку і наступну структуру (файли створюємо порожні, їх вміст буде розписано нижче):

/content/overlay.xul
/chrome.manifest
/install.rdf

Почнемо з самого цікавого файлу - install.rdf.

0.1.1 - Install.rdf, або коротко про головне

Install.rdf - це обов'язковий файл, він є маніфестом установки доповнення, написаний в форматі XML і дає всю інформацію про доповнення.

[email protected]
Test Extension
0.0.0.1
Test Description For Test Extension
NewDeveloper
2
true




3.6
20. *


em: id = id браузера firefox. Для Thunderbird це значення буде
em: minVersion - мінімальна версія firefox, необхідна для роботи програми
em: maxVersion - відповідно максимальна версія firefox, необхідна для роботи розширення

0.1.2 - chrome.manifest, связуя зв'язуючим

chrome: // * ім'я пакета * / * тип пакета * / * шлях всередині пакету *

Основний пакет браузера так і називається - browser. Імена пакетів доповнень прописуються в chrome.manifest і зчитуються браузером при запуску. У нашому прикладі:

content myfirstextension content /
overlay chrome: //browser/content/browser.xul chrome: //myfirstextension/content/overlay.xul

Розберемося з цим. Рядок 1:

content - тип пакету, пакети бувають трьох типів - content, locale та skin
myfirstextension - ім'я пакета, бажано в нижньому регістрі (Firefox 2, Thunderbird 2, і SeaMonkey 1.1 не розуміють змішаний регістр, з того часу ця вимога залишилося правилом хорошого тону)
content / - шлях до цього пакета щодо файлу chrome.manifest, слеш в кінці рядка обов'язковий.

Якщо однією фразою, то ми вантажимо content-пакет, названий myfirstextension з папки content.

Реєстрація оверлею. Файл overlay.xul додається в інтерфейс браузера browser.xul.

0.1.3 - що таке XUL

Розберемо наш найпростіший overlay.xul

1.0 - Установка

Існує два способи установки:

1. В папці з Вашим профілем (dev_folder) знайти папку extensions (якщо її немає, то створити), всередині неї створити файл, назва якого має збігатися з id доповнення (в нашому випадку [email protected]), і всередину його записати повний шлях до папки з доповненням (має складатися тільки з латиниці і бажано не містити знаків підкреслення), не забувши в кінці написати слеш.

Якщо все зробити правильно, то при запуску Firefox запитає дозвіл встановити додаток, після установки і перезавантаження браузера доповнення запрацює.

2. Установка з файлу.
Цей спосіб мені подобається набагато більше. Все що потрібно - упакувати всю папку в zip-архів (install.rdf і chrome.manifest повинні знаходитися в кореневій папці архіву), змінити його розширення на xpi, встановити, перезавантажити браузер. Встановити можна теж різними способами, але суть їх одна:

Перетягнути файл у вікно firefox

Відкрити його (Ctrl + O або Файл -> Відкрити)

Через меню в управлінні доповненнями

Написання розширення під firefox

Або просто відкрити цей файл через будь-який файловий менеджер за умови, якщо для відкриття xpi файлів Firefox призначений додатком за замовчуванням

В цьому випадку в папці extensions всередині dev_folder створиться папка або файл (в залежності від параметра em: unpack всередині install.rdf) з назвою, совпадаюшім з id доповнення.

1.1 - Виправлення.

Якщо Ви встановлювали додаток способом 1 (з пропискою шляху) або install.rdf має параметр true, то процес написання доповнення буде виглядати наступним чином - правка файлів всередині папки, перезавантаження Firefox, тестування, при необхідності повторити.

В іншому випадку доведеться після кожної зміни повторювати пункт 2 з голови 1.0.

Доповнення Addon Developer Helper може позбавити вас від необхідності перезавантажувати браузер після кожної зміни в коді.

Доповнення недоступно для останніх версій Firefox, змінену мною версію додатку можна завантажити за цим посиланням - в ній не виникає проблем.

Написання розширення під firefox

Функціонал цього доповнення можна реалізувати двома іншими:

Схожі статті