使用chrome。*或浏览器的Firefox / Chrome / MS Edge扩展程序。*

时间:2016-11-24 01:57:57

标签: google-chrome-extension firefox-webextensions microsoft-edge-extension

所以我找不到任何谈论使用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只有浏览器。*)?

4 个答案:

答案 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