如何将 Chrome 扩展移植到另一个 Web 浏览器

How to port a Chrome extension to another Web Browsers

我想知道在另一个浏览器上引入 Chrome 扩展的最佳方法,使用 Crossbrowser,重新编码不是一个选项,因为它非常大。

这里的论点是基于扩展的类型,但在大多数情况下,人们无法将扩展从一个浏览器转移到另一个浏览器。 要在这里回答这个问题,您需要指定您的扩展是关于什么的,如果它只与修改某些页面(如 userscripts/userstyles)、扩展浏览器的功能或其他东西有关,因为这确实在学科。 但是,有一些可移植性说明可以帮助您简化此过程:

  1. Don't write browser specific code. In some modern browsers you're able to use HTML5 features, like Web SQL Database API. It is difficult to emulate such behaviour on IE, for instance.
  2. Keep your JavaScript modular; don't use vendor specific JavaScript methods, and your code will be portable and will not rely on TraceMonkey or V8;
  3. Separate HTML from CSS and Javascript, don't make your code dirty and complicated.

希望这对您有所帮助 :)

移植 chrome 扩展的最佳方法是查看 WebExtension: https://wiki.mozilla.org/WebExtensions

https://developer.mozilla.org/en-US/Add-ons/WebExtensions

Firefox 已经开始支持它: https://blog.mozilla.org/addons/2015/08/21/the-future-of-developing-firefox-add-ons/

而且 Microsoft Edge 已承诺支持 chrome API 并且已经支持一些 chrome。* 我尝试过的 API: http://www.winbeta.org/news/new-microsoft-edge-browser-can-use-chrome-and-firefox-extensions

希望几个月后这一切都能在生产中发挥作用。当然你的代码应该仍然是跨浏览器的(这里的另一个答案有一些提示)并且这个答案涵盖了对特殊扩展的支持 API.

我创建这个库是为了让跨浏览器的方式编写一个代码,可以在两个浏览器中工作 FF/Chrome。但它基于承诺行为(FF 方式)。 所以这对那些开始编写新扩展的人会有帮助。在你的情况下,你需要重写所有回调行为以承诺行为,但在完成之后,代码会更清晰。

https://github.com/lawlietmester/webextension

请记住,某些 APIs 在 FF 和 Chrome 中具有完全不同的实现,例如 Proxy API(不是 Proxy 对象)。