是否可以将 Google Chrome 扩展程序转换为 Firefox 或 Safari 浏览器扩展程序?
6 回答
Chrome 和 Firefox 插件本质上都基于 JavaScript 核心,但 Firefox 在设计上更具可扩展性。Gecko 引擎和 XUL(Mozilla 的 XML 用户界面语言)允许您在使用扩展程序时拥有更大的自由度,而 Chrome(和 WebKit)则尝试对其“应用程序”的工作进行沙箱处理。
所以,是的,Chrome 扩展几乎肯定可以变成 Firefox 扩展,只要 Firefox 为您尝试做的任何事情提供 API。只需将 Chrome 的 DevTools SDK 特定内容替换为Firefox 的 Jetpack SDK 特定内容(例如系统调用或您在扩展程序中执行的任何其他操作)。
另一方面,相反的情况并不总是正确的。根据 Firefox 扩展中的功能,它不能总是转换为在 Chrome 中工作。
我为 Safari 和 Firefox 创建了一个 Chrome Api。我已经使用这些翻译 API 将一个相当大的扩展转换为 Safari 和 Firefox。我看到很多人询问浏览器之间转换扩展的可能性,我希望有人可以帮助我用几种方法和任务运行器来补充 API 以自动转换。目前有一些手工工作要做。
https://github.com/kritollm/chrome-extension-api-for-safari-and-firefox
在我第一次写这篇文章之后,我知道了另外两个非常相似的项目。
https://code.google.com/p/adblockforchrome/source/browse/trunk/port.js和
Mozilla 正在开发他们的WebExtensions API。他们说使用 API Porting 插件进出其他浏览器应该更容易。
自 Safari 14/MacOS 11/MacOS 10.16/2020 年起,Safari 将采用术语“Safari Web 扩展”下的 Chrome/Firefox 扩展 API 。这里有一个转换器描述。
GitHub 上有一个积极维护的项目,允许使用 Chrome 扩展 API 来编写 Safari 扩展,请参阅https://github.com/avast/topee。
虽然 Google Chrome、Firefox 和 Edge 共享相同的扩展 API,但 Safari 扩展正在朝着不同的方向发展,要求开发人员使用不同的 API 集,部分还需要 Swift 而不是 JavaScript。
Topee 项目为 Safari 提供了 Google Chrome 扩展 API,允许您在所有浏览器上运行单个代码库。
该 API 足够完整,可以在生产环境中运行,例如随 Avast Passwords for Mac 提供的扩展。
Mozilla 现在提供了这个工具https://www.extensiontest.com来测试 chrome 扩展与 Firefox 的兼容性。当您提交 .crx 文件时,它会为您提供有关发现的兼容性问题的报告。
您可以在 chrome 浏览器中创建 .crx 文件
更多资源
chrome 与 Mozilla 的不兼容性:
https ://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities
移植 Google Chrome 扩展程序: https ://extensionworkshop.com/documentation/develop/porting-a-google-chrome-extension/