【问题标题】:What is the best way to create a cross browser Gmail extension? [closed]创建跨浏览器 Gmail 扩展程序的最佳方法是什么? [关闭]
【发布时间】:2018-02-05 06:23:08
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    但是,有一些功能不兼容。查找此类信息的最佳位置是每个 API 的 Mozilla Developer Network (MDN) 页面。如果您发现不兼容的地方,您可以将它们写下来并提交 PR 到 browser compatibility JSON file maintained by Mozilla,或者直接修改相应的 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.*(基于 Promise)和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 57 (2017-11-14) 发布版本起,Firefox 将禁用所有类型的扩展,WebExtensions 除外

    Gmail 专门

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

    【讨论】:

    • 谢谢 Makyen。非常感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多