Есть ли способ перенести расширение Chrome на другие браузеры? - PullRequest
20 голосов
/ 11 августа 2010

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

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

Ответы [ 4 ]

5 голосов
/ 14 августа 2010

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

4 голосов
/ 15 сентября 2011

Прыжки немного запаздывают.

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

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

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

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

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

4 голосов
/ 11 августа 2010

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

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

  1. Не пишите код браузера. В некоторых современных браузерах вы можете использовать функции HTML5, такие как API базы данных Web SQL. Например, трудно подражать такому поведению в IE.
  2. Держите ваш JavaScript модульным; не используйте специфичные для поставщика методы JavaScript, и ваш код будет переносимым и не будет полагаться на TraceMonkey или V8;
  3. Отделите HTML от CSS и Javascript, не делайте ваш код грязным и сложным.
0 голосов
/ 13 января 2019

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

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

...