Is it possible to convert a Google Chrome extension to a Firefox or Safari browser extension?
问题:
回答1:
Both Chrome and Firefox add-ons are essentially based on a JavaScript core, but Firefox is, by design, much more extensible. The Gecko engine and XUL (Mozilla's XML User Interface Language) allow for a much larger degree of freedom in what you can do with your extension, while Chrome (and WebKit) try to sandbox the working of its 'apps'.
So, yes, a Chrome extension can almost definitely be made into a Firefox extension, provided Firefox provides an API for whatever it is that you are trying to do. Just replace the Chrome's DevTools SDK-specific content with Firefox's Jetpack SDK-specific content (such as system calls or whatever else it is that you do within your extension).
The opposite, on the other hand, is not always true. Depending on the functionality in a Firefox extension, it cannot always be converted to work in Chrome.
回答2:
I have created a Chrome Api for Safari and Firefox. I've converted a rather large extension to Safari and Firefox using these translation APIs. I have seen that many people ask about possibilities for convert extensions between browsers and I hope someone can help me to complement the APIs with several methods and a task runner to automate the conversion. There is currently a bit of manual work to be done.
https://github.com/kritollm/chrome-extension-api-for-safari-and-firefox
After I first wrote this post, I have been aware of two other projects which are very similar.
https://code.google.com/p/adblockforchrome/source/browse/trunk/port.js and
https://github.com/jetpack-labs/chrome-tailor-jetpack
回答3:
Mozilla are working on their WebExtensions API. They say that with the API Porting add-ons to and from other browsers should be easier.
回答4:
There is an actively maintained project on GitHub allowing the use of the Chrome Extension API for writing Safari extensions, see https://github.com/avast/topee.
While Google Chrome, Firefox and Edge share the same extension API, Safari extensions are going in a different direction, requiring developers to use a different set of APIs and partly also Swift instead of JavaScript.
The Topee project provides the Google Chrome Extension API for Safari, allowing you to run a single codebase on all the browsers.
The API is complete enough to run in production, such as the extension delivered with Avast Passwords for Mac.