Подтвердить что ты не робот

Есть ли способ переместить расширение chrome в другие браузеры?

Есть ли способ перенести расширение chrome в другие браузеры, без необходимости полностью переписывать код? Мое расширение chrome использует команду browser_action, чтобы открыть "popup.html" в окне расширения...

Обновление: Я нашел adblockforchrome port.js и нашел, что он лишь несколько полезен для портирования на Safari...

4b9b3361

Ответ 1

Это зависит от типа расширения, но на самом деле. Чтобы более четко ответить на ваш вопрос, вам нужно указать, что такое расширение: изменить некоторые страницы (например, usercripts/userstyles), расширить возможности браузеров или что-то еще.

Однако есть несколько примечаний о переносимости, которые могут помочь вам упростить этот процесс:

  • Не записывайте специфический для браузера код. В некоторых современных браузерах вы можете использовать функции HTML5, такие как API базы данных веб-SQL. Трудно подражать подобному поведению в IE, например.
  • Сохраняйте свой модульный модуль JavaScript; не используйте специальные методы JavaScript для конкретного поставщика, и ваш код будет переносимым и не будет полагаться на TraceMonkey или V8;
  • Отделите HTML от CSS и Javascript, не делайте ваш код грязным и сложным.

Ответ 2

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

Ответ 3

Прыжки немного позже.

Наша компания - Slice Factory (полное раскрытие здесь!) предоставляет услугу конвертации расширений браузера: http://gallery.extensionfactory.com/labs/conversion/ В большинстве случаев ваше расширение chrome будет работать без проблем в FF и Safari.

Служба по-прежнему находится в бета-тестировании, а конверсия Firefox работает лучше, чем Safari. Я не могу полностью раскрывать то, что наше техническое решение, но это как ответ SO, я могу добавить несколько деталей: мы переработали полный стек api javascript, который имитирует большинство хром-расширений API для Safari и Firefox; в Firefox мы основываем нашу работу на JetChrome. Кроме того, у нас есть обертки, которые повторно упаковывают расширение хром, добавляя нашу библиотеку и переписывающие манифесты и т.д.

Помимо этого, это в основном несколько хороших идей, проб и ошибок и много времени разработки.

В качестве примера: Safari 5.1 только что представила всплывающее окно, соответствующее Chrome browser_action, но у нас уже есть альтернативное решение, которое работает для предыдущих версий. Firefox не поддерживает HTML5 WebSQL, но для этого у нас есть API. Мы также предоставляем способ принести webapps в FF, а затем в Safari. Цель состоит в том, чтобы использовать API Chrome как ссылку и имитировать его во всех других браузерах.

Не подталкивая вас к нашему решению, я могу добавить, что время полного покрытия API Chrome как для Safari, так и для Firefox, вероятно, не стоит того, если вы не планируете конвертировать несколько расширений. Поэтому для одного или двух расширений я бы посоветовал сделать ваш код максимально модульным и просто создать три расширения - или попробовать наш сервис!

Ответ 4

Да, это возможно при использовании Webextension API с использованием webextension-polyfill.

Я использовал его для создания этого, где мне нужно было только изменить методы обратного вызова на Promises и использовать browser.something вместо chrome.something для вызова API браузера.