Как установить расширение nex в opera

Обновлено: 30.06.2024

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

Формат NEX

API из проекта Chromium, поддерживаемые в NEX-расширениях (например, вкладки) доступны в chrome.\* , а специфичные для Opera (например, для экспресс-панели) доступны в объекте opr.\* .

Стоит заметить, что Opera поддерживает расширения в CRX-формате, если Opera поддерживает используемые в нём API.

Если охота просмотреть код расширения, его можно переименовать, изменив расширение на zip, и распаковать.

Виды расширений

Существует несколько видов расширений для Opera.

1. Расширения, подразумевающие действия браузера (и действия страницы)

You can use Browser Actions or Page Actions to put UI elements in the browser window. Browser Actions are used to put UI elements in the top right side of the browser next to the address bar. This is different from Page Actions which are used to place a UI element inside the address bar.

Page actions are used to put a UI element specific to just a page or a limited set of pages fitting a certain criteria. If you would like the UI element to be there for all pages, then you should use Browser Actions for that purpose. The UI elements you can use are buttons, badges and popups. To know more on how to create and use these in extensions, please read the article on creating buttons, badges and popups.

Note: There can only be a maximum of 6 extensions installed at a time in the toolbar using browser actions, and only up to 4 which are based on page actions.

2. Расширения контекстного меню

3. Расширения экспресс-панели

Создание расширения для экспресс-панели доступно только для Opera (NEX). Подробнее о том, как создать расширение для экспресс-панели.

4. Расширения без интерфейса

Возможно создание расширения, не имеющего интерфейса.

Примером является расширение, обрабатывающее ввод с клавиатуры и, например, открывающее вкладку с сайтом.

Составные части расширения

Манифест

Манифест является обязательной частью любого расширения. Этот файл содержит основную информацию о расширении, как то: название расширения, его автора, разрешения, версию и пр. Если файл манифеста содержит ошибку, расширение просто не запустится. Подробнее о манифесте можно прочесть здесь.

Фоновый скрипт

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

Можно использовать HTML-страницу и вставить внутрь JavaScript-код внутри блока <script>, но лучше просто использовать .js-файл и указать его в манифесте. Браузер автоматически сгенерирует соответствующую страницу для него. Например,

Для того, чтобы указать страницу событий, в манифесте нужно установить false для поля persistent :

Фоновый скрипт очень важен при работе с пользовательским интерфейсом. Любой участок кода, создающий элементы пользовательского интерфейса, должен быть определён здесь.

  • Во время установки, перезапуска, запуска или обновления до новой версии.
  • Когда возникает событие, которое прослушивалось страницей событий.

Когда другая часть расширения (например, всплывающее окно) вызывают их (например, используя runtime.getBackgroundPage ).

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

Скрипт содержимого

If you want to make any change to the web page itself, then you need to use a content script. The content script has access to the DOM of the web page, but access to variables and functions is confined to only itself. For example, content scripts cannot access variables defined in the web page, or even in other content scripts.

The content script does not have direct access to the variables and functions in the background scripts too. The same applies for access to API functions. However, you can use message passing to communicate between various parts of the extensions, be it background scripts or popups. So, you could call your functions in the background script and then communicate to the content script to do a certain task involving the host page’s DOM.

Более подробно описано в этой статье.

Многие расширения имеют всплывающее окно, появляющееся при нажатии на кнопку расширения. Данное всплывающее окно является HTML-страницей и должно быть указано в манифесте. Прочтите статью, чтобы узнать больше.

Расширение может иметь страницу настроек. Если страница настроек определена в манифесте, ссылка на неё будет доступна на странице управления расширениями. Определить страницу настроек в манифесте можно следующим образом:

Для хранения пользовательских настроек можно использовать локальное хранилище.

Иконки и другие ресурсы

Обычно расширению требуется иконка. Иконка 128x128 используется для страницы расширений и во время установки, 48x48 — для страницы управления расширениями, 16x16 — как favicon для страницы расширения, а 19x19 — для панели расширений. Помимо иконок можно хранить изображения, шрифты и пр. Всё это может быть расположено внутри расширения в произвольном месте.

Структура файлов и каталогов

На данном рисунке представлена структура файлов типичного расширения.

Разрешения и привилегии

Необходимость разрешений

В манифесте перечислены API браузера, доступ к которым разрешён для расширения.

Разделение привилегий

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

Скрипты содержимого работают в изолированном режиме

Политика безопасности содержимого

Политика безопасности содержимого определена в манифесте, например, таким образом:

"content_security_policy": "[WRITE YOUR POLICY STRING HERE]"

Запрет функций eval и иже с ними

Такие функции как eval и прочие (перечислено ниже) отключены, так как они могут быть использованы в XSS-атаках. Проще говоря, не используйте следующие функции:

  • eval()
  • setTimeout()
  • setInterval()
  • new Function(String)

Внедрённый JavaScript не будет работать

Внедрённый код на JavaScript также может быть использован в XSS-атаках, поэтому он тоже отключён. Это значит, что запрещены обработчики событий (например <a onclick="…" ).

Разрешена загрузка только локальных ресурсов

Разрешена загрузка скриптов и ресурсов только из пакета расширения:

Скрипт выше не будет загружен, поэтому требуется разместить его внутри расширения и подключать примерно так:

К счастью, нет никаких ограничений на использование AJAX, поэтому можно делать такие запросы к любым хостам.

Разработчики из Opera Software представили NEX - формат расширений, созданный на базе хромовского CRX, но более нейтральный в плане поддержки конкретных вендоров. А если простыми словами, то они взяли CRX и на его базе создают свой формат NEX, который будет поддерживать не только API от Google, но и как минимум еще и от Opera. А теперь немного подробнее.

Когда разработчики решали вопрос перехода на Chromium, они очень внимательно изучили все аспекты этого шага. В том числе обратили свое внимание на формат расширений CRX. Поскольку формат этот признает только те API, которые Google захотел увидеть в своем Chrome, а браузер Opera, несмотря на хромовскую природу, имеет свой интерфейс и свой функционал, то возникает проблема: как позволить разработчикам расширений использовать API от Opera?

В конце концов, поскольку внести поддержку API Оперы в формат CRX весьма проблематично, было решено создать на его основе свой NEX (образован от Navigator Extension). Причем в Opera решили, что если уж создавать новый формат расширений, то нужно сделать его открытым, чтобы и команды других браузеров смогли принять участие в его разработке. А в перспективе планируют сделать его стандартом, протолкнув через организацию W3C.

Что представляет из себя NEX сегодня?

На данный момент расширения NEX имеют расширение .nex (логично, кто бы спорил) и передаются с типом application/x-navigator-extension. NEX сейчас это CRX минус некоторые хромовские API и плюс API для работы с экспресс-панелью Оперы. При этом браузер Opera, а также их магазин дополнений продолжат поддерживать параллельно и CRX.

Как NEX будет поддерживать API разных браузеров?

Заявлено, что в формате NEX могут быть описаны специфические API всех браузеров, принимающих участие в разработке. Например, формат поддерживает API Хрома через chrome.*, а API Оперы через opr.*. При этом разработчики могут создавать универсальные расширения за счет проверок типа if(opr.speeddial) .

Если уж они решили делать свой интерфейс, то выхода у них особо и не было. Вот только все равно остаются две проблемы:

1. А если каждый суслик мелкий браузер решит внести поддержку своих API? Не превратится ли NEX в свалку?

2. А кто из более менее популярных браузеров реально может принять участие в развитии NEX? Надежда только на Firefox.

Есть ли возможность синхронизации расширений через учетную запись Opera? Если нет, то есть ли возможность экспорта/импорта расширений?

Я тоже очень хочу это знать. В Google Chrome расширения синхронизируются с самим аккаунтом Google а почему в Опере нет такой возможности или её можно как то реализовать? Может есть какое то расширение которое позволяет это сделать?

Присоединяюсь к вопросу.

Почему в новой Опере пропало заполнение приватной информации из контекстного меню. Нынешняя полуавтоматическая не работает корректно. Старые закладки не синхронизируются, новые экспресс панели - тоже. Странный продукт ещё и ловит вирусы как Хром.Жаль уходить с нео, но придётся, видимо.

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

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

Комментарии

8 комментариев

После перехода норвежского интернет-обозревателя на основу в виде проекта Chromium, у пользователей появилась интересная возможность использовать приложения одного из данных браузеров в другом.

Не так давно состоялся первый финальный релиз Opera 15 (который уже успел несколько раз обновиться), работающий на стороннем движке (и не только движке). Т.к. Chromium является основой не только новой версии Оперы, но и браузера Chrome, пользователям стала доступна возможность установки расширений от Chrome в Opera и наоборот. Посмотрим, каким образом можно это делать.

Установка расширений для Chrome в Opera 15+

Если сразу после выхода первых тестовых версий пользователям приходилось совершать некоторые непростые действия для достижения данной цели, то теперь все довольно просто — для ее реализации достаточно установить специальное расширение.

1. Идем в каталог Opera и устанавливаем «Download Chrome Extension», нажав на кнопку «Добавить в Opera».
2. Теперь идем в каталог Chrome Web Store и ищем нужные нам расширения.
3. При открытии страницы с описанием обращаем внимание на адресную строку — в правой стороне появилась иконка, нажатие на которую и установит его в Оперу:

Установка расширений Хрома в Оперу

Установка расширений Opera 15 в Chrome

Перед установкой нам необходимо активировать режим разработчика в Хроме. Делается это с целью обретения возможности устанавливать приложения не только из официального магазина приложений компании Google. Для этого идем в Меню -> Инструменты -> Расширения. Здесь в правом верхнем углу ставим галочку «Режим разработчика».

1. У вас должна быть установлена последняя версия норвежского браузера, уже основанная на Chromium. Переходим в ней в каталог. Если вы зайдете в него в версии 12.xx — то вам будут предложены несовместимые с Хромом версии приложений.

2. Находим понравившееся нам расширение, переходим на страницу с ним.

3. На кнопке «Добавить в Opera» нажимаем правой кнопкой мыши и выбираем пункт «Сохранить по ссылке». Указываем место для сохранения.

Сохранения расширения из каталога

4. Переходим в папку со скачанным файлом и видим, что у него имеется расширение .nex. Нам необходимо переименовать его в файл, с расширением .crx. Именно данный тип файлов принимается в Chrome.

Читайте также: