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

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

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


person David    schedule 11.08.2010    source источник


Ответы (4)


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

person Community    schedule 14.08.2010

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

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

  1. Не пишите код для конкретного браузера. В некоторых современных браузерах вы можете использовать функции HTML5, такие как API веб-базы данных SQL. Например, такое поведение сложно эмулировать в IE.
  2. Держите свой JavaScript модульным; не используйте специфичные для поставщика методы JavaScript, и ваш код будет переносимым и не будет полагаться на TraceMonkey или V8;
  3. Отделите HTML от CSS и Javascript, не делайте код грязным и сложным.
person Daniel O'Hara    schedule 11.08.2010
comment
Зачем вам заботиться о совместимости с IE? Он не поддерживает расширения. - person serg; 11.08.2010

Прыжок с небольшим опозданием.

Наша компания 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 только что представил всплывающее окно, соответствующее Chrome browser_action, но у нас уже есть альтернативное решение, которое работает для предыдущих версий. Firefox не поддерживает HTML5 WebSQL, но у нас есть для этого API. Мы также предоставляем возможность переноса веб-приложений в FF, а вскоре и в Safari. Цель состоит в том, чтобы использовать Chrome API в качестве эталона и имитировать его во всех других браузерах.

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

person Stefano    schedule 15.09.2011
comment
О, и для IE есть веб-слайсы. Мы используем их для другого нашего продукта в качестве «суррогата» :) - person Stefano; 15.09.2011
comment
Только что попробовал ваш сервис, но, к сожалению, он не сработал. (ID: hcieonlgpadegedlcpdhndifhaeahajp, bkeiokdfjgnaglohebonlmpimnpinahd) - person Stefan Schmidt; 22.01.2012
comment
@StefanSchmidt, к сожалению, всегда есть некоторые ограничения! Первый не работает, потому что они ищут элемент на странице до создания страницы. На самом деле повезло, что он работает в хроме. Второй конвертируется и хорошо работает в Firefox; он не конвертируется в сафари из-за неподдерживаемого формата изображения, я исправил это, но, скорее всего, он не будет работать из-за разделения файлов cookie между всплывающим окном и страницами в Safari. Если у вас есть дополнительный интерес, пожалуйста, свяжитесь со мной по электронной почте в нижней части страницы сайта! - person Stefano; 22.01.2012
comment
@Stefano Ваш преобразователь хрома - отличная вещь! Вы написали Ой, а для IE есть webslices. Мы используем их для другого нашего продукта в качестве «суррогата». Где это решение для IE? У меня есть расширение для Chrome, которое я хочу перенести в IE. - person Ofear; 25.10.2012
comment
@ofear, спасибо!! извините, решение webslice еще не автоматизировано, поэтому мы не можем легко его предоставить. Веб-фрагменты имеют очень ограниченное взаимодействие, поэтому это не очень хорошее общее решение, и часто требуется переписать большую часть вашего расширения с другим подходом. IE10 может и Win8 изменит это, мы думали, что наши усилия были лучше направлены на более устойчивые решения, поэтому мы сейчас исследуем это. Некоторые решения оболочки ActiveX существуют для IE 8/9, но мы не предоставляем это решение. - person Stefano; 26.10.2012
comment
@Stefano Я пробовал ваш сервис несколько раз, но всегда получаю тайм-аут 504 шлюза (уже несколько дней). - person Kristijan; 28.11.2013
comment
@Kristijan С тех пор я перешел к другим проектам, и теперь компания сосредоточена на других продуктах; но вы можете попробовать спросить прямо здесь: builder.extensionfactory.com/crm/request_create В противном случае есть есть и другие решения, появившиеся с тех пор, хотя большинство из них требуют некоторых модификаций кода... - person Stefano; 02.12.2013
comment
@Stefano, я пытался открыть URL-адрес конверсии, но, похоже, он больше не доступен :( - person Sandeep J Patel; 20.03.2017
comment
привет @SandeepJPatel, это было 3 года назад ;-) Я даже больше не работаю в этой компании, и я уверен, что сейчас есть другая альтернатива! - person Stefano; 29.03.2017

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

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

person abhijithvijayan    schedule 13.01.2019