1. Главная страница » Компьютеры

Chrome browser content browser xul

Автор: | 16.12.2019

Внимание! Содержимое данной статьи устарело. Сейчас дополнения создаются с помощью WebExtensions.

Вы решили присоединиться к удивительному миру расширений Mozilla? Добро пожаловать. Для пропуска Вам понадобятся элементарные навыки программирования, так как Вам придется разговаривать на языках XML, JavaScript и CSS. Проходите. Браузеры давно уже перестали быть простым средством для просмотра веб-страниц, наличие дополнений значительно расширило их функционал и сделало каждого из них целой экосистемой. Благодаря различным реализованным в дополнениях функциям пользователь может построить браузер своей мечты. Пожалуй, почти каждый пользователь Firefox ставил так недостающий дефолтной сборке Speed Dial или ограждающий от всякой навязчивой рекламы adBlock, и уж точно большинство веб-разработчиков пользуются расширением Firebug, который уже сам по себе является целым комбайном. А как Вам дополнение, позволяющее сканировать доступные WiFi-сети или полноценный FTP-клиент внутри браузера? Ни один их существующих ныне браузеров не может предложить такой функционал «из коробки».

Самыми известными и используемыми из дополнений Firefox являются расширения (или аддоны, англ. Add-on) и темы. В этой статье мы разбираем расширения. Mozilla предоставила разработчикам расширений широкий простор для действий — весь браузер, получить доступ можно практически к любому элементу браузера, именно поэтому все расширения в магазине addons.mozilla.org проходят строгую модерацию — задействованы не только валидаторы, но и живые люди, которые при необходимости связываются с Вами по email, поэтому, если Вы захотите поделиться расширением, Вам понадобится хотя бы минимальное знание английского языка.

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

Содержание

Читайте также:  Cube iwork 8 air

Шаг 0 — Подготовка.

Если Вы используете Огнелис как браузер по умолчанию, то Вам, наверняка, не захочется захламлять его незаконченными тестовыми расширениями, хоть и своими. Если для Вас это не критично, то пропустите шаг 0.0.

Шаг 0.0 — Создание нового профиля.

Создание нового профиля — это просто. Чтобы вызвать окно работы профилями нужно выполнить (Firefox должен быть закрыт):

Start -> Run "%ProgramFiles%Mozilla Firefoxfirefox.exe" -no-remote -P dev
или
firefox -P

Start -> Run "%ProgramFiles(x86)%Mozilla Firefoxfirefox.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 и даёт всю информацию о дополнении.

xml version ="1.0" ? >
RDF xmlns ="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em ="http://www.mozilla.org/2004/em-rdf#" >
Description about ="urn:mozilla:install-manifest" >

em:id > myfirstextension@coddism.com em:id >
em:name > Test Extension em:name >
em:version > 0.0.0.1 em:version >
em:description > Test Description For Test Extension em:description >
em:creator > NewDeveloper em:creator >
em:type > 2 em:type >
em:unpack > true em:unpack >

em:targetApplication >
Description >
em:id > em:id >
em:minVersion > 3.6 em:minVersion >
em:maxVersion > 20.* em:maxVersion >
Description >
em:targetApplication >

Как и большинство других XML-файлов, он начинается с объявления версии. Далее находится объявление формата RDF и описание:

em:id — id приложения, по правилам хорошего тона пишется в формате email и обязано быть уникальным
em:name — под этим именем расширение будет отображаться в списке расширений
em:version — версия, тоже отображается в списке, рядом с названием
em:description — описание, выводится в просмотре расширения
em:creator — разработчик, выводится в просмотре расширения, здесь указывается имя/ник разработчика или название организации
em:type — тип. Тип, равный двум, означает, что этот xpi файл является расширением. Четыре, например, это тема (полный список здесь: https://developer.mozilla.org/en-US/docs/Install_Manifests#type)
em:unpack — этот параметр, установленный в true, нужен для того, чтобы расширение в папке dev_folder было распаковано — так легче редактировать.

em: >em:minVersion — минимальная версия firefox, необходимая для работы приложения
em:maxVersion — соответственно максимальная версия firefox, необходимая для работы расширения

0.1.2 — chrome.manifest, связуем связуемое

Связывает все компоненты дополнения воедино именно этот файл. Все файлы, используемые в этом манифесте, подгружаются через адрес с протоколом chrome://. Протокол chrome:// является привилегированной адресацией внутри Firefox, по нему выполняется код браузера и дополнений, еще он имеет следующий вид:

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

XUL – это такой язык разметки на основе XML, разрабатываемый MozillaFoundation, некая альтернатива HTML. Весь интерфейс Firefox написан на этом языке. Чтобы посмотреть, что он представляет из себя, надо ввести в адресную строку chrome://browser/content/browser.xul и посмотреть его исходный код (Ctrl+U).

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

xml version ="1.0" encoding ="utf-8" ? >
overlay id ="coddismo-overlay" xmlns ="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
statusbar id ="status-bar" >
statusbarpanel id ="coddism-panel" label ="Hello, world!" />
statusbar >
overlay >

Эта запись означает, что браузер находит в своей разметке панель статуса (обычно называется панелью дополнений, в разметке браузера обозначается как statusbar с .

1.0 — Установка

Существует два способа установки:

1. В папке с Вашим профилем (dev_folder) найти папку extensions (если её нет, то создать), внутри неё создать файл, название которого должно совпадать с id дополнения (в нашем случае myfirstextension@coddism.com), и внутрь его записать полный путь до папки с дополнением (должно состоять только из латиницы и желательно не содержать знаков подчеркивания), не забыв в конце написать слэш.

Если всё сделать правильно, то при запуске Firefox спросит разрешение установить дополнение, после установки и перезагрузки браузера дополнение заработает.

2. Установка из файла.
Этот способ мне нравится гораздо больше. Всё что нужно — упаковать всю папку в zip-архив (install.rdf и chrome.manifest должны находиться в корневой папке архива), сменить его расширение на xpi, установить, перезагрузить браузер. Установить можно тоже разными способами, но суть их одна:

Перетащить файл в окно firefox

Открыть его (Ctrl+O или Файл -> Открыть)

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

Либо просто открыть этот файл через любой файловый менеджер при условии, если для открытия xpi файлов Firefox назначен приложением по умолчанию

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

1.1 — Правка.

Если Вы устанавливали дополнение способом 1 (с прописыванием пути) или install.rdf имеет параметр true, то процесс написания дополнения будет выглядеть следующим образом — правка файлов внутри папки, перезагрузка Firefox, тестирование, при необходимости повторить.

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

На этом вводная статья заканчивается, написание рабочего расширения будет разобрано в следующей статье (этой).

UPD:

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

Дополнение недоступно для последних версий Firefox, измененную мною версию дополнения можно скачать по этой ссылке — в ней проблем с совместимостью нет.

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

  1. Developer Assistant (Reload All Chrome + немного других интересностей)
  2. Restart Button (Restart Firefox)

Сегодня в менеджере обновлений решил обновится firefox до шестой версии. Всё скачалось и установилось без проблем, но вот огне-лис загружатся отказался и выдал:

Я с этим уже сталкивался при при обновлении на 5-ю версию firefox и сегодня проблему решил менее чем за минуту.

Проблема в русификации лиса. Удаляем дополнение руссификации и всё работает.
Дополнения firefox держит в

Переходим в эту папку.

Помните, что файлы начинающиеся с точки являются скрытыми. Если обозреваем файлы и папки в наутилусе, то надо нажать Cntl+H

И удаляем файл langpack-ru@firefox.mozilla.org.xpi

Удаляем русификацию из firefox

Если удаление langpack-ru@firefox.mozilla.org.xpi не поможет, то тут скорее всего глючит какое-то другое дополнение. Советую для начала полностью перетащить папку extensions в другое место, если и это не поможет, то перетаскиваем папку Cache возможно ошибка возникает из-за него. В крайнем случае можно полностью очистить папку xxxyyy.default, но тогда потеряются все настройки профиля.

Загружаем браузер и видим, что он на английском. Для русификации переходим на сайт http://mozilla-russia.org/ и выбираем русификацию под нужную версию firefox, как показано на скриншоте.

Устанавливаем дополнение и перезагружаем браузер. Наслаждаемся русским firefox.

В данной статье представлена пошаговая инструкция по разработке простейшего расширения для FireFox.
Это частичный перевод оригинальной статьи.

Это не моя статья, а моего друга (его мыльце: templar8@gmail.com). Он очень хочет попасть на Хабр. У меня самого не хватает кармы для инвайта.

Вступление

Это руководство — пошаговая инструкция по созданию простейшего расширения. Мы попробуем добавить в строку состояния еще одну небольшую панельку с фразой «Hello, World!».

Подготовка окружения

Расширения упаковываются и распространяются в виде zip-файлов или пакетов с расширением XPI.

Вот пример типичной внутренней структуры XPI-файла:

exampleExt.xpi:
/install.rdf
/components/*
/components/cmdline.js
/defaults/
/defaults/preferences/*.js
/plugins/*
/chrome.manifest
/chrome/icons/default/*
/chrome/
/chrome/content/

Нам нужно создать структуру каталогов, похожую на эту. Для начала создайте корневую директорию расширения (например, C:extensionsmy_extension или

/extensions/my_extension/ ). Внутри этого каталога создайте каталог chrome , в котором создайте каталог content .

В корневом каталоге расширения создайте два пустых текстовых файла с именами chrome.manifest и install.rdf . В итоге должна получиться структура каталогов следующего вида:

install.rdf
chrome.manifest
chrome
content

Дополнительная информация о настройке окружения находится по этой ссылке.

Сценарий установки

Откройте файл install.rdf и добавьте в него следующий текст:

  1. xml version ="1.0" ? >
  2. RDF xmlns ="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  3. xmlns:em ="http://www.mozilla.org/2004/em-rdf#" >
  4. Description about ="urn:mozilla:install-manifest" >
  5. em:id > sample@example.net em:id >
  6. em:version > 1.0 em:version >
  7. em:type > 2 em:type >
  8. with minimum and maximum supported versions. —>
  9. em:targetApplication >
  10. Description >
  11. em:id >em:id >
  12. em:minVersion > 1.5 em:minVersion >
  13. em:maxVersion > 3.0.* em:maxVersion >
  14. Description >
  15. em:targetApplication >
  16. em:name > sample em:name >
  17. em:description > A test extension em:description >
  18. em:creator > Your Name Here em:creator >
  19. em:homepageURL > www.example.com em:homepageURL >
  20. Description >
  21. RDF >

* This source code was highlighted with Source Code Highlighter .

  • sample@example.net — ID расширения. Это значение записывается формате email-адреса и необходимо для идентификации расширения (оно не должно быть вашим email-адресом). Сделайте его уникальным. Вы также можете использовать GUID. ПРИМЕЧАНИЕ: Хотя этот параметр и записывается в формате email-адреса, он не обязательно должен быть валидным. (example.example.example)
  • Параметр 2 — 2 указывает на то, что это будет расширение. Допустим, для тем оформления это значение должно быть установлено в 4 (все коды типов можно посмотреть тут).
  • — ID Firefox’а (прим. пер. – видимо, для Thunderbird будет другое значение).
  • 1.5 — номер минимально необходимой для работы расширения версии Firefox. Никогда не используйте символ * для указания minVersion, это может привести к неожиданным результатам.
  • 3.0.* — максимальный номер версии Firefox с которой будет работать расширение. Это значение должно быть не новее самой последней на данный момент версии браузера! В данном случае «3.0.*» указывает на то, что расширение будет работать с Firefox 3.0 и версиями 3.0.x.

(Если вы получили сообщение, что install.rdf неверен, полезным будет загрузить этот файл в Firefox (Файл->Открыть файл…), после чего браузер покажет вам xml ошибки. В моем случае был пробел перед « browser.xul ( $FIREFOX_INSTALL_DIR/chrome/browser.jar содержит content/browser/browser.xul ) В browser.xul мы можем найти описание строки состояния, которое выглядит приблизительно так:

  1. statusbar id ="status-bar" >
  2. . statusbarpanel > .
  3. statusbar >

* This source code was highlighted with Source Code Highlighter .

— это «связующая точка» XUL-слоя.

XUL-слои

XUL-слои — это способ добавления виджетов в XUL-документ. XUL-слой — это .xul-файл, который определяет XUL-фрагменты, описывающие связующие точки в «основном» документе. Эти фрагменты могут указывать на виджеты, которые будут добавлены, удалены или изменены.

Пример документа XUL-слоя

  1. xml version ="1.0" ? >
  2. overlay id ="sample"
  3. xmlns ="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
  4. statusbar id ="status-bar" >
  5. statusbarpanel id ="my-panel" label ="Hello, World" />
  6. statusbar >
  7. overlay >

* This source code was highlighted with Source Code Highlighter .

Тег с id, равным « status-bar » указывает на виджет браузера в который мы хотим добавить наш элемент.

Тег — это новый виджет, который мы хотим добавить.

Сохраните этот код в файле sample.xul каталога chrome/content .

Chrome URIs

XUL-файлы – это часть т.н. «Chrome Packages» — пакетов элементов пользовательского интерфейса, загружаемых через URI вида chrome:// . Вместо того, чтобы загружать интерфейс, используя URI вида file:// (тем более, расположение Firefox может быть различным в зависимости от платформы и систем), разработчики Mozilla пришли к решению создать новый вид URI, используя который все установленные приложения будут иметь доступ к содержимому XUL.

URI для окна браузера – это chrome://browser/content/browser.xul . Попробуйте ввести этот URL в адресной строке Firefox.

Chrome URI состоит из нескольких частей:

  • 1-я — протокол ( chrome ), которая сообщает сетевой библиотеке Firefox, что это Chrome URI.
  • 2-я — название пакета (в данном примере, browser ), который указывает на набор компонентов пользовательского интерфейса. Для вашего приложения эта часть должна быть уникальной, во избежание конфликтов с другими расширениями.
  • 3-я — тип запрашиваемых данных. Бывает трех типов: content (XUL, JavaScript, XBL связи и другие составляющие пользовательского интерфейса приложения), locale (DTD, файлы .properties, в которых могут быть и другие файлы, содержащие строки локализации пользовательского интерфейса) и skin (CSS и изображения темы).
  • Последняя часть – путь к загружаемому файлу.

Например, chrome://foo/skin/bar.png загружает файл bar.png из раздела skin темы foo .

Когда вы загружаете что-либо, оперируя Chrome URI, Firefox использует реестр Chrome (Chrome Registry) для преобразования этого URI в реальный путь к файлу на диске (или в JAR архивах).

Создание Chrome Manifest

Для получения большей информации о Chrome Manifest и всех его свойствах можно обратиться к справочному руководству.

Откройте файл chrome.manifest, который был создан в корневом каталоге вашего расширения. Добавьте следующий код:

content sample chrome/content/

(Не забудьте о закрывающем слеше, «/»! Без него пакет не будет зарегистрирован.)

Разберем каждый элемент:

  1. тип пакета chrome
  2. название пакета chrome (должно быть написано в нижнем регистре, потому что Firefox/Thunderbird в версии 2 и более ранних не поддерживают названия со смешанным регистром — баг 132183)
  3. размещение файлов пакетов chrome

Это означает, что файлы пакета sample расположены в каталоге chrome/content относительно места расположения файла chrome.manifest .

Обратите внимание, что файлы контента, локализаций и скинов должны находиться внутри каталога content, locale и skin подкаталога chrome соответственно.

Сохраните файл. Теперь, когда вы запустите Firefox с вашим расширением (как это сделать, будет описано ниже), пакет chrome будет зарегистрирован.

Регистрация слоя

Теперь необходимо связать ваш слой с окном браузера. Для этого добавьте следующие строки в файл chrome.manifest :

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

Эти две строки указывают Firefox’у связать sample.xul и browser.xul во время загрузки browser.xul .

Тестирование

Во-первых, мы должны сообщить Firefox о нашем расширении. На стадии разработки для Firefox версии 2 и выше, вы можете указать откуда брать новое расширение, и браузер будет его загружать после каждого перезапуска.

    Перейдите в домашний каталог, а после в каталог, содержащий профиль Firefox, с которым вы собираетесь работать (например, Firefox/Profiles/

.default/ ).

  • Перейдите в каталог extensions/ , если его не существует, то создайте.
  • Создайте текстовый файл и поместите в него полный путь к каталогу с вашим расширением (например, C:extensionsmy_extension или
  • /extensions/my_extension/ ). Пользователи Windows должны помнить о направлении слешей, обязательно добавьте закрывающий слеш и удалите все замыкающие пробелы.

  • Сохраните файл с id расширения в качестве его имени (например, sample@example.net). Без расширения файла.
  • Теперь все готово к тестированию.

    Запустите Firefox. Firefox по текстовой ссылке сам найдет каталог с вашим расширением и установит его. После запуска браузера вы увидите надпись «Hello, World!» в правой части строки состояния.

    Вы можете сделать некоторые изменения в .xul-файле, перезапустить Firefox, и сразу же увидите результат.

    Создание пакета

    Теперь, когда расширение работает, вы можете создать пакет для последующего распространения и установки.

    Запакуйте архиватором zip содержимое каталога с вашим расширением (не сам каталог расширения) и измените расширение архива с .zip на .xpi.

    Если вы являетесь счастливым обладателем ‘Extension Builder’-а, то он может сам сделать за вас всю грязную работу (Tools -> Extension Developer -> Extension Builder). Просто перейдите в каталог с вашим расширением и нажмите кнопку Build Extension. Это расширение имеет очень много инструментов облегчающих разработку.

    Теперь загрузите получившийся .xpi-файл на ваш сервер и удостоверьтесь, что его тип установлен в application/x-xpinstall . После этого можно скачать и установить расширение.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *