4

所以我找不到任何关于使用 chrome.* 或 browser.* 的内容。在一些 WebExtension 示例中,它使用 browser.* ( browser.runtime.getManifest();) https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/getManifest,在其他示例中它使用 chrome.* ( chrome.notifications.create),https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/notifications

我不完全确定有什么区别。它是上下文的吗?chrome.* 和 browser.* 在我的内容脚本和 Firefox 的后台脚本中都可用。我也查看了 IE 文档,他们使用 browser.*(在他们的文档中没有看到 chrome.*)

我想知道 Chrome 扩展程序只使用 chrome.* 还是有 browser.* 之间有什么区别(IE 只有 browser.*)?

4

3 回答 3

8

Chrome 只有 chrome.apis。Edge 只有 browser.apis。Firefox 具有 browser.apis 和 chrome.apis 以兼容现有的 Chrome 扩展。

主要区别在于,在 Firefox 中 browser.apis 使用 Promise,而 chrome.apis 使用回调。

于 2016-11-24T02:45:28.203 回答
0

我认为你现在最好的解决方案是使用回调而不是承诺,因为它们适用于 chrome、firefox 和 edge。此外,您可以使用诸如 browser = browser || chrome;解决 chrome vs browser 问题和browser.runtime.lastError;错误处理之类的东西。Firefox 支持回调和承诺版本的 api,回调版本适用于 chrome 和浏览器对象。

于 2017-01-26T08:22:22.933 回答
0

截至 2021 年

检查https://github.com/mozilla/webextension-polyfill
(或 TypeScript 对应物https://github.com/Lusito/webextension-polyfill-ts
以获得 Chrome 和 Firefox 之间更好的兼容性

于 2021-07-29T08:07:42.487 回答