Расширения для Opera: Страница настроек перевод

Вступление


В этой статье рассказывается как использовать новую фичу расширений для Opera, называемую страницей настроек. Это страница в расширении, которая содержит настройки, которые может устанавливать пользователь. Эта страница называется options.html и находится в корневой папке расширения.

Работает это предельно просто — когда вы устанавливаете расширение, если Opera находит в нём файл options.html, то делает активной кнопку Preferences для данного расширения в менеджере расширений (Tools > Extensions > Manage Extensions).

Вы можете размещать на странице настроек всё, что захотите, но вообще там должны располагаться элементы формы, которые позволят пользователя выбрать различные настройки и сохранить их изменения в localStorage либо widget.preferences для их использования в расширении. В этой статье мы предложим вам просто расширение, содержащее шаблон страницы настроек, который вы можете спокойной использовать в своих собственных расширениях.

Представляем шаблон


Перед тем, как идти дальше, скачайте наше тестовое расширение. Шаблон, содержащийся в нём, на самом деле ничего не делает и используется лишь для того, чтобы показать функциональность страницы настроек. Установите расширение, затем отправляйтесь в менеджер расширений и нажмите кнопку с шестернёй. Вы увидите, что опцию «Preferences», как это показано на Рисунке 1.

image

Рисунок 1: Новая функциональность расширений для Opera, доступная через менеджер расширений.

Когда вы выберете опцию «Preferences», откроется страница настроек, которая выглядит так, как это показано на Рисунке 2.

image

Рисунок 2: Страница настроек тестового расширения, содержащая элементы формы, позволяющие пользователя определять настройки расширения.

Как работает страница расширений?


Если вы распакуете тестовое расширение, то найдёте в корне файл options.html. Существование этого файла говорит Opera о необходимости сделать доступным пункт «Preferences». Ответственность за корректное функционирование этой страницы возлагается на вас.

К счаcтью, вы можете использовать наш шаблон для экономии времени. Он содержит набор элементов формы, позволяющих вам выбирать различные опции для настроек расширения, плюс немного умного JavaScript.

Когда пользователь открывает страницу, скрипт проходит по всем элементам <select> и <input> с аттрибутом name и устанавливаем им соответствующие значения из widget.preferences. Вы можете спокойно удалять или добавлять элементы на страницу, скрипт продолжит корректно функционировать.

В дополнение, это скрипт автоматически устанавливает заголовок страницы, его название и имя автора, используя значения из объекта window.widget, который в свою очередь берёт их в config.xml.

По умолчанию, значения настроек вписаны в разметку файла options.html. Когда пользователь изменяет значение любого элемента формы, оно моментально сохраняется в объекте widget.preferences. Вам даже не нужно делать сабмит формы!

Интерфейс widget.preferences представляет собой тоже самое, что и объект localStorage, за исключением того, что не имеет такого же ограничения по размеру и его значения по умолчанию могут быть определены в секции «preference» файла config.xml, как указано в секции The preference Element and its Attributes спецификации Widget Packaging and Configuration. В момент, когда скрипт нашего options.html сохраняет значение в объект widget.preferences, возбуждается событие во всех активных документах расширения (особенно в фоновом скрипте). Перехватывая это событие, фоновый скрипт может немедленно реагировать на изменение настроек.


Итак, когда страница настроек загружается, скрипт проходит по различным элементам формы и устанавливает им значения из widget.preferences, если ни там есть, либо выставляет дефолтные значения.

Для обработки настроект с множественными значениями, такими как группа чекбоксов или множественные селекты, мы сливаем/разделяем множественные значения используя переменную glue: это простая \n. Если ваше расширение требует более сложного интерфейса настроек, то вам следуют написать свою собственную версию файла options.html для корректной работы.

Итоги


На этом завершается наш тур по функциональности страницы настроек расширений для Opera. Смело берите наш шаблон и используйте его в своих расширениях.
+19
23 ноября 2010, 11:04
12
SonicGD 12,5

комментарии (36)

+4
alist #
У меня есть ощущение, что в какой-то момент возникнет стандарт расширений для браузеров. Chrome и Safari используют для них Javascript. В Mozilla такие расширения можно писать, используя JetPack. Теперь вот и Опера переносит в расширения свои наработки по Widget Specification — а там тоже все на Javascript.
+5
Shpankov #
Догадка верная. По нашим планам, расширения должны стать открытым веб-стандартом, чтобы все браузеры могли их поддерживать без необходимости портирования с браузера на браузер.
0
SonicGD #
Будет здорово.
0
kostin #
А производители браузеров в перспективе станут кем-то вроде производителей ОС, где расширения будут чем-то вроде прикладного софта?

Браузеры будут поддерживать расширения, созданные по единому стандарту, сайты, в идеале, в них тоже будут рендериться идентично. За счёт чего будут конкурировать браузеры? За счёт скорости и безопасности?
+6
homm #
За счет возможности выделить текст внутри ссылки и правильного переключения окон в порядке использования.
0
kostin #
Ага, у одних это будет нативными фичами, а для других — понадобится расширения ставить.
0
Cancel #
Да и не факт, что расширениями можно будет добиться подобной функциональности.
0
GlebLozhkovoy #
Так браузеры и станут ОСь, конечно, не в современном понимании, но всё же. А расширения будут прикладным софтом. Вы всё верно сказали :)
+1
GamePad64 #
Ну почему же не в современном понимании? Chrome OS же!
НЛО прилетело и опубликовало эту надпись здесь
+1
taliban #
=) Никогда такого не будет… Вы забываете что даже самые популярные и «правильные» браузеры не поддерживают одинаково то для чего одни предназначены в первую очередь ;)
А про расширения я уж тем более заикнуться хотел бы… Чего только стоит фаерфокс с его XUL, там же раздолье для плагинов, можно сделать все, в ие все более низкоуровнево, а остальные выделяют лишь урезанное апи… Стандарта не будет :(
0
hshhhhh #
не ну вам конечно виднее чем сотруднику оперы :D
0
taliban #
Причем тут сотрудник или нет? Вы думаете мозилла откажется от всех своих возможностей которые щас предлагает плагинам? Да тысячи плагинов тупо перестанут работать! У них совершенно другой подход, думаете они поменяют свое апи только потому что у других оно больше похоже друг на друга? Я сомневаюсь.
0
hshhhhh #
то есть если опера и хром договоряться о едином стандарте для расширений и будут использовать его — мозила будет поддерживать свой формат вопреки? несмешно :)
0
taliban #
Да. Я уверен что мозилла не поменяет апи. Либо сделает некую эмуляцию «для стандарта», которую все будут игнорировать потому как базовое апи на много шире и лучше.
0
Cancel #
Мозилла, скорее всего, будет просто поддерживать два формата расширений, а потом тихо один прикроет. Я бы на их месте именно так сделал.
0
taliban #
<irony> //для особо умных минусятеров
Дайте ка я подумаю… Хм, у меня есть два разных апи для расширений, один с немеряными возможностями, а второй более убогий но «такой как у остальных», и еще на забываем факт что на первом у нас тысячи рабочих расширений, многие из которых (привет firebug) и спользуют именно эти «немеряные» возможности… Какое же мне из двух апи закрыть? Хм, я даже не знаю какое удалить… Наверно я удалю навороченое и тем самым заставлю всех разработчиков переписать все их расширения, таким образом потеряв офигительную (тысячную?) базу сделанных и рабочих расширений.
</irony>
0
Cancel #
Ага, а вот в микрософте-то идиоты сидят! Взяли и убили всю обратную совместимость в WP7!
0
taliban #
Нет, они не убирали обратную совместимость, они создали новый продукт. Они создали _более качественный и продуманный_ продукт нежели был раньше. Сродни новому фаерфоксу… будет новый фаерфокс? Я сомневаюсь.
–3
SowingSadness #
Карму у меня всякие фаны уже убили, поэтому буду писать то что думаю — не боясь.

Задолбали уже всякие демо-слайды делать на Маках!
+2
homm #
Видимо, нужно было специально ради такого случая ставить Ubuntu на виртуалку?
0
corristo #
маковский скриншотер делает красивые скрины окон с тенью. Киллер-фича.
А на самом деле — ну не смотрите вы на заголовок окон :)
0
n1kka #
Для этого необязательно ставить MacOS, чтобы делать красивые скрины с тенью, достаточно одного SnagIt :)
+1
pepelsbey #
Автор статьи Крис Миллс пользуется Mac OS. Т.е. не выделывается, а просто пользуется. Дышите ровнее, продукт кроссплатформенный.
–1
SowingSadness #
Спасибо капитан!

Я выражал свое недовольство тенденцией, которая заключается в том, что каждый считает своим долгом сделать скриншоты приложения в MacOS.
0
taliban #
Странно, я делаю не в макоси… Да и многие на хабре тоже далают скрины либо в линах либо в винде… Мы похоже неправильные.
0
pepelsbey #
Кэп продолжает: каждый считает долгом сделать скриншоты там, где их быстрее всего сделать, т.е. в своей рабочей системе. Получается, что следующий раз вам нужно кричать: «Ах! Ну почему же все переходят на Mac OS!»
0
yolk #
Вопрос в тему расширений. Как в расширениях подключать CSS стили к обрабатываемым страницам(как это делается с userjs)?
+1
AntonDiaz #
Здесь (см. раздел «Работа со стилями»)
+1
yolk #
Ну для расширений хотелось бы стили в отдельный CSS файл помещать.
0
AntonDiaz #
Сам жду. Но пока не реализовано.
0
CriggerMarg #
что-то совсем не могу найти, как удалить почтовый ящик. Я добавил акк с gmail и теперь не могу его удалить. Прекрасно
0
obscuro #
Menu — Mail and chat accounts видимо.
0
CriggerMarg #
спасибо) но это неинформативно.
Нигде нет возможности щелкнуть правой кнопкой на аккаунте и удалить
0
NAZGULhabr #
Хочу написать маленькое замечание по поводу расширений.
Всё отлично. Полезных расширений масса, но: давайте попробуем написать что-то в каком-нибудь twi-приложении. Пишется легко, а если ссылочку вставить? А если вы и текст копировали и вставляли? Поясню в чем (я считаю) косяк. Дело в том, что, как только вы попытались открыть приложение, но потом сделали активным вкладку, либо попытались что-то скопировать в буфер, а потом вставить в приложение, либо просто сменить вкладку — приложение тут же предательски закрывается, а когда мы его открываем, получаем снова дефолтное окно, без нашего текста.
Моё предложение: дайте возможность фиксировать приложение со всем его содержимым!
0
NAZGULhabr #
Приложение=расширение) — заболтался.

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