有没有一种方法可以将Chrome扩展程序移植到其他浏览器,而不必完全重写代码? 我的Chrome扩展程序使用browser_action命令在扩展窗口中打开“popup.html”...
更新:我找到了adblockforchrome port.js,发现它对于移植到Safari只有些许帮助...
有没有一种方法可以将Chrome扩展程序移植到其他浏览器,而不必完全重写代码? 我的Chrome扩展程序使用browser_action命令在扩展窗口中打开“popup.html”...
更新:我找到了adblockforchrome port.js,发现它对于移植到Safari只有些许帮助...
苹果公司提供了一些指导,介绍如何将Chrome扩展程序转换为Safari,但你会遇到的问题是每个浏览器对扩展程序允许的功能集不同。即使是从Chrome转换到Safari,你在Chrome中可以做的事情,在Safari中也许无法实现,反之亦然。
有点晚了,但还是想提供帮助。
我们公司 - Slice Factory(在此完全公开!)提供浏览器扩展转换服务:http://gallery.extensionfactory.com/labs/conversion/。 在大多数情况下,您的Chrome扩展程序将在Firefox和Safari中无缝运行。
该服务仍处于测试阶段,Firefox转换效果比Safari好。 我不能完全透露我们的技术解决方案,但作为SO答案,我可以添加一些细节:我们重新开发了一个完整的Javascript API堆栈,模仿了大多数Chrome扩展API,用于Safari和Firefox;在Firefox中,我们基于JetChrome进行工作。此外,我们还有包装器,重新打包Chrome扩展程序,添加我们的库并重写清单等。
除此之外,这主要是一些好主意、试错和大量的开发时间。
例如: Safari 5.1刚刚引入了与Chrome的browser_action对应的弹出窗口,但我们已经有了适用于以前版本的替代解决方案。Firefox不支持HTML5 WebSQL,但我们有一个API可供使用。我们还提供了一种将Web应用程序带到FF的方法,很快也会带到Safari。 目标是以Chrome API为参考,在所有其他浏览器上模仿它。
不想推销我们的解决方案,但我可以补充一点:在Safari和Firefox上完全覆盖Chrome API的时间可能不值得 - 除非您计划转换多个扩展程序。因此,对于仅一个或两个扩展程序,我建议尽可能使您的代码模块化,并创建三个扩展程序 - 或尝试我们的服务!
是的,使用webextension-polyfill的Webextension API可以实现。
我利用它构建了this,在其中只需将回调方法更改为Promises并使用browser.something
而不是chrome.something
来调用浏览器API。