代码之家  ›  专栏  ›  技术社区  ›  David

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

  •  20
  • David  · 技术社区  · 15 年前

    有没有一种方法可以将chrome扩展移植到其他浏览器,而不必完全重写代码?我的Chrome扩展使用 browser_action 命令在扩展窗口中打开“popup.html”…

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

    4 回复  |  直到 11 年前
        1
  •  5
  •   user3071284    9 年前

    苹果 provides some guidance 关于如何将chrome扩展移植到safari,但您将遇到的问题是,每个浏览器都有一组不同的允许扩展的功能。即使使用chrome到safari,你也可以在chrome中做一些在safari中做不到的事情,反之亦然。

        2
  •  4
  •   Daniel O'Hara    15 年前

    这取决于扩展的类型,但不是真的。为了更清楚地回答您的问题,您需要指定您的扩展是关于什么的:修改一些页面(如用户脚本/用户样式)、扩展浏览器的功能,或者其他一些东西。

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

    1. 不要编写特定于浏览器的代码。在一些现代浏览器中,您可以使用HTML5功能,如WebSQL数据库API。例如,在ie上很难模仿这种行为。
    2. 保持javascript模块化;不要使用特定于供应商的javascript方法,您的代码将是可移植的,不会依赖tracemonkey或v8;
    3. 将html与css和javascript分开,不要让代码变得肮脏和复杂。
        3
  •  4
  •   Stefano    14 年前

    跳得有点晚。

    我们的公司-切片厂(这里完全公开!)是否提供浏览器扩展转换服务: http://gallery.extensionfactory.com/labs/conversion/ 在大多数情况下,你的chrome扩展将在ff和safari中无缝工作。

    这项服务仍处于beta测试阶段,firefox的转换效果比safari好。 我不能完全透露我们的技术解决方案是什么,但这是一个很好的答案,我可以添加一些细节:我们重新开发了一个完整的javascript api堆栈,它模拟了safari和firefox的大多数chrome扩展api;在firefox中,我们的工作基于jetchrome。另外,我们还有包装器,可以重新打包chrome扩展,添加我们的库和重写清单等等。

    除此之外,主要是一些好的想法、尝试和错误,以及大量的开发时间。

    例如: Safari5.1刚刚引入了一个对应于Chrome浏览器操作的弹出窗口,但是我们已经有了一个可用于以前版本的替代解决方案。Firefox不支持HTML5WebSQL,但我们有一个API。我们还提供了一种将webapps带到ff和safari的方法。 目标是让chrome api作为参考,并在所有其他浏览器上模拟它。

    在不推动您采用我们的解决方案的情况下,我可能会补充说,在safari和firefox上完全覆盖chrome api的时间可能不值得——除非您计划转换几个扩展。因此,对于一两个扩展,我建议您将代码尽可能模块化,只需创建三个扩展——或者尝试我们的服务!

        4
  •  0
  •   abhijithvijayan    7 年前

    是的,webextension api可以使用 webextension-polyfill .

    我利用它来建造 this 我只需要将回调方法改为promises并使用 browser.something 而不是 chrome.something 调用浏览器API。