Firefox / Chrome / MS Edge 扩展使用 chrome.* 或浏览器.*

Firefox / Chrome / MS Edge extensions using chrome.* or browser.*

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

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

我想知道 Chrome extensions only use chrome.* 或者 does it have browser.* 和 does does Chrome extensions only use chrome.* 之间的区别)?

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

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

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

截至 2021 年

勾选https://github.com/mozilla/webextension-polyfill
(或对应的 TypeScript https://github.com/Lusito/webextension-polyfill-ts
Chrome 和 Firefox

之间更好的兼容性