Возвращение навигатора

Автор: Дмитрий Свириденко
Опубликовано в журнале "Компьютерра" №44 от 23 ноября 2004 года.

Выпущенный в ноябре 2004 года браузер Firefox — продукт, по меньшей мере странный. Впервые силы сообщества Open Source были брошены не столько на разработку, сколько на рекламную кампанию, включающую даже покупку вскладчину рекламной полосы в New York Times. Читая восторженные обзоры, и сам начинаешь верить в уникальность Mozilla Firefox, хотя каких-то уникальных свойств в нем нет и быть не может — в конце концов, это всего лишь браузер.

Одна из главных особенностей Firefox — аскетичность. В начальной поставке Firefox умеет меньше, чем Opera, и уступает по нагруженности интерфейса IE. Пользователю достается голый каркас, который нужно самостоятельно обустроить с помощью расширений (extensions) и плагинов.

Впрочем, кое в чем Firefox изначально лучше своих конкурентов. Это, пожалуй, самый удобный на сегодня браузер для поиска в Сети. Прозрачная поддержка Google позволяет набивать поисковые запросы прямо в строке для ввода адреса (при этом пользователь автоматически попадает на первую ссылку, отвечающую введенному запросу). Справа от строки адреса находится специальное окошко для ввода запроса. Здесь можно выбрать нужный поисковый движок или добавить недостающий, благо список поддерживаемых поисковиков очень широк и включает, помимо прочего, Yandex и Yandex.Lingvo. Явный выбор предпочтительного поискового сервера, правда, не влияет на контекстный поиск — если, выделив любое слово на странице, нажать правую кнопку мыши и выбрать опцию Search Web For…, поиск все равно будет производиться в Google.

А вот многое другое придется дорабатывать вручную.

AdBlock

Одно из самых популярных расширений — резалка баннеров. Всплывающие картинки Firefox умеет блокировать и сам, а вот бороться с рекламой, размещенной в теле страницы, не способен. Зато с этим справляется расширение AdBlock (adblock.mozdev.org), главный недостаток которого — сложность настройки. К счастью, AdBlock знает, что такое регулярные выражения, и небольшой скрипт, созданный Майком Петерсеном (Mike Petersen), решает эту задачу:

[Adblock]
/\D\d{2,3}x\d{2,3}\D/
googlesyndication
us.yimg.com/a/
/\/buy_assets\//
/[\W\d_](top|bottom|left|right|)?banner(s|id=|\d|_)[\W\d]/
/[\W\d](double|fast)click[\W\d]/
/[\W\d]click(stream|thrutraffic|thru|xchange)[\W\d]/
/[\W\d]value(stream|xchange|click)[\W\d]/
/[\W\d]dime(xchange|click)[\W\d]/
/[\W\d](onlineads?|ad(banner|click|-?flow|frame|ima?g(es?)?|_id|js|log|serv(er|e)?|stream|_string|s|trix|type|vertisements?|v|vert|xchange)?)[\W\d]/

GoogleBar

Официальной версии Google ToolBar для Mozilla и Firefox пока не существует, и хотя Firefox и так прекрасно ищет в Сети, тем, кто привык к возможностям Google ToolBar, пришлось бы тяжело, когда бы не GoogleBar (googlebar.mozdev.org) — неофициальная версия популярного адд-она, написанная специально для Mozilla. В чем-то она уступает оригиналу, в чем-то — превосходит.

Allow Right Click

Название этого расширения говорит само за себя. Allow Right Click (extensions.roachfiend.com) позволяет сохранять изображения, даже если они защищены java-скриптом, который блокирует нажатие правой кнопки мыши. Мелочь, конечно, — для загрузки этих изображений, как правило, достаточно найти их адрес в коде страницы, — но мелочь удобная.

ImageZoom

Еще одно популярное расширение, позволяющее увеличивать любую картинку на странице. Правда, полезность его сомнительна, поскольку подавляющее большинство изображений, размещенных в Интернете, ужаты до предела и увеличение разрешения только делает более заметными артефакты сжатия. Загрузить расширение можно с www.yellowgorilla.net/imagezoom.

Mozilla Archive Format
www.maf.mozdev.org

Очень удобное расширение, позволяющее сохранять страничку со всеми изображениями и скриптами в один-единственный файл, который впоследствии можно открыть с помощью Firefox так же просто, как страницу в вебе. Впрочем, иногда страницы сохраняются не полностью (часть изображений теряется).

Web Developer
www.chrispederick.com/work/firefox/webdeveloper

Пригодится тем, кому интересно, как устроены чужие сайты, а разбираться с html-кодом лень. Расширение позволяет выделять различные элементы сайта, отключать-подключать Cascading Style Sheets (CSS), отключать и включать показ картинок и предоставляет дополнительную информацию о странице (например, данные о размере картинок). Совмещение на одном экране кода и дизайна помогает быстро обнаружить ошибки. Можно даже изменять CSS на лету, настраивая чужой сайт по своему вкусу. В общем, необязательное, но полезное расширение для всех, кто занимается веб-дизайном.

Image-Show-Hide
www.imageshowhide.mozdev.org

Opera когда-то была мила народу тем, что позволяла на лету отключать или включать загрузку изображений. С помощью расширения Image-Show-Hide это умеет и Firefox. На самом деле, в Web Developer эта функциональность включена, но многим ведь не нужны лишние возможности.

Gmail Notifier
www.nexgenmedia.net/extensions

Еще одна самодеятельность на тему продукции Google — встроенная в браузер автоматическая проверялка почты Gmail. Функционально она гораздо беднее оригинального Gmail Notifier, но о поступлении почты сообщает исправно, а места в памяти занимает немного.

Single Window

Firefox поддерживает режим табов, однако по умолчанию при нажатии на ссылку, как правило, открывается новое окно. Исправить этот недочет могут расширения Single Window (www.spuller.us) и TabBrowser Extensions (piro.sakura.ne.jp/xul/_tabextensions.html.en). Соотношение между ними такое же, как между Image-Show-Hide и Web Developer. Single Window умеет только принудительно открывать новые окна в новом табе, тогда как у Tabbed Extensions возможностей гораздо больше. И можно было бы смело рекомендовать Tabbed Extensions, но Single Window работает стабильнее.

BugMeNot

Не очень известный у нас сайт BugMeNot выполняет важную общественную функцию. Это большая база данных паролей к ресурсам, требующим обязательной регистрации. В конце концов, глупо оставлять свой почтовый адрес New York Times только для того, чтобы прочитать одну-единственную статью. Сервис BugMeNot эту проблему решает, а расширение BugMeNot (bugmenot.mozdev.org) автоматизирует процесс подстановки чужого пароля.

FireFTP
www.fireftp.mozdev.org

Не думаю, что использовать браузер в качестве FTP-клиента — хорошая идея. Но если она все же взбрела вам в голову, расширение FireFTP позволит работать с FTP-сайтами с максимально возможным для браузера комфортом. Конечно, до удобства, которое предоставляет специально написанный клиент, FireFTP далеко, но жить можно.

Выбрать для короткого обзора десяток расширений из нескольких сотен — задача нетривиальная, и вполне возможно, что нужные именно вам расширения в этот обзор не попали. Если так, вы всегда можете поискать необходимое в специализированных коллекторах на update.mozilla.org/extensions. Единственное замечание — в библиотеке может находиться устаревшая версия, так что не поленитесь и загрузите программу со странички автора.

Но что делать, если нужного расширения нет? Написать его самому.

Пишем расширение сами

Программистом для этого быть вовсе не обязательно. Любой, кто способен написать небольшой код на JavaScript, может написать и расширение для Firefox, потому что все другие составляющие расширения либо делаются по шаблону, либо относительно просты.

Проще всего взять уже готовое расширение и модифицировать его под себя. Файл *.xpi представляет собой обычный архив, и для того, чтобы посмотреть, что находится внутри, достаточно переименовать его в *.zip.

Как правило, в корне архива лежат два файла — install.rdf и install.js — и папка chrome. Инсталляционный файл JavaScript используется для совместимости с ранними версиями Firefox, и им, по большому счету, можно пренебречь (начиная с версии 0.9, менеджер расширений в Firefox обрабатывает rdf-файлы). Install.rdf устроен довольно просто, и единственная строка, требующая пояснений, находится в самом начале. Выглядит она примерно так:

<em:id>{a0faa0a4-f1a7-4098-9a74-21efc3a92372}</em:id>

Это уникальный GUID расширения, поэтому его нужно в срочном порядке заменить своим. Сгенерировать GUID можно с помощью программки guidgen (www.microsoft.com/downloads/details.aspx?FamilyId=94551F58-484F-4A8C-BB39-ADB270833AFC). Чуть ниже в файле rdf встретится еще одна похожая строка:

<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>,

но как раз ее нужно оставить нетронутой, поскольку этот GUID присвоен Firefox Mozilla — приложению, ради которого все и затевалось.

Покончив с инсталляционным скриптом, переходим в каталог chrome, где нас ждет еще один архив, на сей раз с расширением .jar. В этом архиве размещены две папки: content и skin. В первой хранится само расширение, во второй — графические ресурсы. В папке content нас интересуют в основном два файла: файл с кодом на JavaScript (в котором, собственно, и описано, что делает ваше расширение) и файл оверлея, в котором описано, как и из какого меню можно это расширение вызвать. Главную трудность представляет JavaScript, а описать интерфейсные элементы несложно:

<popup id=”contentAreaContextMenu”>
<menuitem id=”yandexs” label=”OurFunction” accesskey=”Y”
insertafter=”context-searchselect” oncommand=”onOurFunction”/>
</popup>.

В этом случае при выделении фрагмента текста на странице в контекстном меню, возникающем при нажатии правой кнопки мыши, появится пункт «OurFunction», которому присвоена горячая клавиша Y. Активация этого пункта приведет к выполнению функции onOurFunction из файла со скриптом, расположенного в том же каталоге.

После того как все перекрестные ссылки в файлах проверены, а все файлы переименованы должным образом, мы можем совершить обратную операцию и запаковать наше новое расширение так, чтобы оно было готово к установке [Паковать можно в zip (с последующим переименованием в *.jar)]. Структура простейшего расширения сводится к следующему (см. рис.).

Рис. 1

Осталось немного. Теперь нам нужно написать нужный код на JavaScript, запаковать архив с полностью готовым расширением и разместить получившийся файл *.xpi на сервере, добавив в .htaccess такую строчку:

AddType application/x-xpinstall .xpi.

А потом заставить все это работать.


<<Сто лет тому вперед
Все материалы номера
Пиритические сеансы >>