所以我找不到任何谈论使用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的后台脚本中找到。我也看了IEs文档,他们使用浏览器。*(在他们的文档中没有看到chrome。*)
我想知道它们之间有什么区别,Chrome扩展程序只使用chrome。*还是有浏览器。*(IE只有浏览器。*)?
答案 0 :(得分:6)
Chrome只有chrome.apis。 Edge只有browser.apis。 Firefox同时具有browser.apis和chrome.apis,可与现有的Chrome扩展程序兼容。
主要区别在于Firefox中的browser.apis使用promises但chrome.apis使用回调。
答案 1 :(得分:1)
浏览器和Chrome API都可以在Edge中使用,但请确保您不要混用和匹配。使用所有这一个。
答案 2 :(得分:0)
我认为你现在最好的解决方案是使用回调而不是promises,因为它们适用于chrome,firefox和edge。另外你可以使用类似的东西
browser = browser || chrome;
解决Chrome与浏览器问题,browser.runtime.lastError;
解决错误问题。 Firefox支持api的回调和promise版本,回调版本适用于chrome和浏览器对象。
答案 3 :(得分:0)
截至 2021 年
检查https://github.com/mozilla/webextension-polyfill
(或 TypeScript 对应物 https://github.com/Lusito/webextension-polyfill-ts)
为了更好地兼容 Chrome 和 Firefox