创建跨浏览器Gmail扩展程序的最佳方法是什么?

时间:2017-08-28 02:59:45

标签: google-chrome-extension firefox-addon gmail-api firefox-webextensions

我想创建一个适用于Chrome和Firefox的Gmail扩展程序。最好的方法是什么?

1 个答案:

答案 0 :(得分:4)

只需使用chrome.*进行扩展API调用即可编写适用于两者的代码。

Chrome和Firefox(使用WebExtensions)在很大程度上与代码直接兼容。只要您使用两种浏览器(ChromeFirefox)支持的API,您就可以在两种浏览器中使用chrome.*命名空间进行API调用。许多扩展程序将直接与代码兼容。

但是,存在一些功能不兼容性。查找有关此类信息的最佳位置是每个API的Mozilla Developer Network(MDN)页面。如果您发现不兼容,可以将其编写并向browser compatibility JSON file maintained by Mozilla提交PR,或直接修改相应的MDN API页面(例如developers need to see something is actually broken处的问题)。对于某些事情,您需要detect the browser you are running in并为每个执行略微不同的代码。但是,对于大多数事情,这些将是运行时选择。您不需要有两组不同的代码。

Chrome :您应首先阅读Chrome extension overview(可能还会与概述中链接的页面一起阅读)。 architecture section具有整体架构信息,可帮助您了解事物的组织/完成方式。您还应该阅读Content Scripts

Firefox :您应该首先阅读Anatomy of a WebExtension页面(也许是通过阅读从那里链接的页面来完成工作)。它具有整体架构信息,可帮助您了解事物的组织/完成方式。在这里,阅读content scripts将非常有益。

注意:

  1. Firefox本身支持使用browser.*(基于承诺)和chrome.*(基于回调,如Chrome)的API。如果您想在Chrome中使用基于Promise的API调用,则Mozilla会有browser.* pollyfill。回调支持chrome.*命名空间的事实没有很好地记录(事实上,但是Mozilla选择将文档更改为仅在几个地方提及它)。因此,您会发现所有API页面都显示browser.*命名空间和Promises。不要被吓倒。支持chrome.*命名空间,特别是可以更轻松地使用Chrome进行跨浏览器扩展(特别是从Chrome移植到Firefox)。

  2. 每个浏览器都有另一个不支持的API。 Mozilla在开发WebExtensions API方面仍然非常活跃。在很大程度上,这是实现Chrome中已有的API。在某种程度上,这提供了其他类型的Firefox附加组件中可用的一些附加功能。但是,这将始终是非常有限的功能子集,这些功能可用于其他类型的Firefox附加组件。如果您不知道,Firefox将禁用所有类型的扩展,除WebExtensions 之外的版本,自Firefox 57(2017-11-14)发布版本开始。

  3. Gmail专门

    您将需要的将在很大程度上取决于您实际想要做什么。问题How to develop Chrome extension for Gmail?提供了一些信息。您还应该调查Gmail API。还有很多与制作Gmail Google Chrome extension相关的问题/答案。