有没有办法将chrome扩展程序移植到其他浏览器?

时间:2010-08-11 14:17:51

标签: javascript html firefox-addon google-chrome-extension ieaddon

有没有办法将Chrome扩展程序移植到其他浏览器,而无需完全重写代码?我的Chrome扩展程序使用browser_action命令在扩展程序窗口中打开“popup.html”...

更新:我找到了adblockforchrome port.js,发现它只对移植到Safari有点帮助......

4 个答案:

答案 0 :(得分:5)

Apple provides some guidance有关如何将Chrome扩展端口转换为Safari的问题,但您遇到的问题是每个浏览器都有一组不同的扩展功能。即使使用Chrome浏览器,也可以使用Chrome浏览器无法在Safari中执行的操作,反之亦然。

答案 1 :(得分:4)

这取决于扩展的类型,但不是真的。要更清楚地回答您的问题,您需要指定扩展程序的内容:修改某些页面(如userscripts / userstyles),扩展浏览器的功能或其他内容。

但是,有一些可移植性说明可以帮助您简化此过程:

  1. 不要编写特定于浏览器的代码。在一些现代浏览器中,您可以使用HTML5功能,例如Web SQL Database API。例如,很难在IE上模仿这种行为。
  2. 保持JavaScript模块化;不要使用特定于供应商的JavaScript方法,并且您的代码将是可移植的,不会依赖于TraceMonkey或V8;
  3. 将CSS与CSS和Javascript分开,不要让你的代码变脏和复杂。

答案 2 :(得分:4)

迟到了。

我们的公司 - Slice Factory(此处完全披露!)确实提供了浏览器扩展转换服务:http://gallery.extensionfactory.com/labs/conversion/ 在大多数情况下,您的chrome扩展程序将在FF和Safari中无缝运行。

该服务仍处于测试阶段,Firefox转换效果优于Safari。 我不能完全透露我们的技术解决方案是什么,但这是一个SO答案,我可以添加一些细节:我们重新开发了一个完整的javascript api堆栈,模仿大多数用于Safari和Firefox的chrome扩展API;在Firefox中,我们的工作基于JetChrome。另外,我们有包装器重新打包chrome扩展,添加我们的库并重写清单等等。

除此之外,它主要是一些好的想法,反复试验和大量的开发时间。

举个例子: Safari 5.1刚刚推出了一个与Chrome的browser_action相对应的弹出窗口,但我们已经有了一个适用于以前版本的替代解决方案。 Firefox不支持HTML5 WebSQL,但我们有一个API。我们还提供了一种将Web应用程序引入FF的方法,并很快将其用于Safari。 目标是将Chrome API作为参考,并在所有其他浏览器上模仿它。

如果不推动您使用我们的解决方案,我可能会补充说,在Safari和Firefox上完全覆盖Chrome API的时间可能不值得 - 除非您计划转换多个扩展程序。因此,对于一两个扩展,我建议尽可能使代码模块化,只需创建三个扩展 - 或者尝试我们的服务!

答案 3 :(得分:0)

是的,可以使用webextension-polyfill的Webextension API。

我利用它来构建this,在这里我只需要将回调方法更改为Promises,并使用browser.something而不是chrome.something来调用浏览器API。