0

Я хотел бы начать создание кросс-браузерного расширения. Я понимаю, что все API и структуры разные для каждого браузера, но есть ли какая-либо универсальная практика?Расширение порта Chrome для Firefox, Safari, IE

Я искал Stackoverflow, и ни один из вопросов не дает универсального решения для создания кросс-браузерных расширений.

+4

Потому что нет универсального решения, возможно? Кроме того, это, вероятно, вне темы здесь, как «Вопросы, предлагающие нам рекомендовать или найти книгу, инструмент, библиотеку программного обеспечения, учебник или другой ресурс вне сайта» _ – Xan

+0

Хорошо, вы правы. Тогда я закрываю его. – igorpavlov

ответ

2

Из моего опыта Лучшее решение - использовать класс адаптеров, который вызовет браузер api. После того, как вы сможете создать код, который будет работать в каждом браузере, используя правый адаптер.

Например, в фоновом скрипте у вас нет setTimeout/setInterval для firefox, но у вас есть его для chrome. Вы можете иметь такой код

core.js

this._browserAdapter.setTimeout(function(){...}, 1000); 

ChromeAdapter.js

setTimeout: function (callback, time) { 
     return setTimeout(callback, time); 
} 

FirefoxAdapter.js

setTimeout: function(callback, time) { 

     var {setTimeout} = require("sdk/timers"); 
     return setTimeout(callback, time); 
}, 

Вы можете сделать все, используя этот способ, чтобы вы могли иметь более 90% общего кода.


Редактировать

Он будет работать на Firefox и Safari. Для IE это совершенно по-другому, но с новым microsoft EDGE я думаю, что будет возможно что-то подобное. Ждать и смотреть !

+0

Это то же самое решение, которое я придумал здесь. Немного сложно сделать все, но мы используем формат модуля UMD JS (https://github.com/umdjs/umd) для структурирования кода. Мы используем RequireJS (http://requirejs.org) для загрузки модулей в Chrome, в то время как расширения Firefox используют общую реализацию JS Mozilla. –

Смежные вопросы