所以我找不到任何关于使用 chrome.* 或浏览器的内容。在一些 WebExtension 示例中,它使用浏览器。 (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的文档,他们使用浏览器*(在他们的文档中没有看到chrome.*)
我想知道 Chrome 扩展程序是否仅使用 chrome.* 或是否也有浏览器(IE 只有浏览器)之间有什么区别?
Chrome只有chrome.apis。Edge 只有 browser.apis。Firefox 同时具有 browser.apis 和 chrome.apis 功能,以便与现有的 Chrome 扩展程序兼容。
主要区别在于,在Firefox中,browser.apis使用promise,而chrome.apis使用回调。
截至 2021 年
检查 https://github.com/mozilla/webextension-polyfill
(或 TypeScript 对应项 https://github.com/Lusito/webextension-polyfill-ts)
以获得 Chrome 和 Firefox 之间更好的兼容性
我认为您目前最好的解决方案是使用回调而不是承诺,因为它们适用于chrome,Firefox和Edge。此外,您可以使用类似的东西browser = browser || chrome;
解决 chrome 与浏览器的问题,并browser.runtime.lastError;
错误处理。Firefox 同时支持 API 的回调和承诺版本,回调版本适用于 chrome 和浏览器对象。