3

所以我找不到任何關於使用chrome。*或browser. *的內容。在某些WebExtension示例中,它使用瀏覽器。*(browser.runtime.getManifest();https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/getManifest,而在其他WebExtension示例中,它使用Chrome。*(chrome.notifications.create),https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/notifications使用chrome。*或瀏覽器的Firefox/Chrome/MS Edge擴展。*

我不完全確定有什麼區別。它是上下文嗎? Chrome瀏覽器*和瀏覽器*都可以在我的內容腳本和Firefox的後臺腳本中使用。我看了看IEs文檔以及他們使用的瀏覽器。*(在他們的文檔中沒有看到chrome。*)

我想知道Chrome擴展程序與Chrome擴展程序之間有什麼不同,它有瀏覽器嗎?*(IE瀏覽器只有瀏覽器*)嗎?

+0

高度相關,可能是重複:[使用chrome.tabs與browser.tabs瀏覽器兼容性](http://stackoverflow.com/questions/39544625/using-chrome-tabs-vs-browser-tabs-for-瀏覽器兼容性) – Makyen

回答

4

Chrome只有chrome.apis。 Edge只有browser.apis。 Firefox兼容browser.apis和chrome.apis,以兼容現有的Chrome擴展。

主要區別在於Firefox中的browser.apis使用承諾,但chrome.apis使用回調。

+0

Chrome的chrome.apis也使用回調?我也很快擡起頭來 邊緣的browser.storage,它不使用承諾? https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9420301/ 基本上我正在研究如何使它與跨瀏覽器兼容,而不必去和改變每個JS在不同瀏覽器之間調用* .api的文件,還是會發生? –

+0

要注意,我正在開發Firefox並利用它的瀏覽器承諾。*。 –

+1

@KnightYoshi,如果你想跨瀏覽器的兼容性使用'chrome。*',而不是'browser。*'從'chrome。*'(回調)調用到他們的'browser。*'(Promise)等價物是相當容易的。 。這很難做到相反,因爲當調用'browser。*'API時,API調用中不存在回調函數信息。另外,即使你不填充,使用'chrome。*'也會給你Chrome和Firefox。在一起這兩個給你大部分的市場(你可以填充其餘的)。 – Makyen

0

我認爲你現在最好的解決方案是使用回調而不是承諾,因爲它們適用於Chrome,Firefox和邊緣。此外,您可以使用類似 browser = browser || chrome;來解決Chrome瀏覽器問題和browser.runtime.lastError;錯誤處理。 Firefox支持回調和api的promise版本,回調版本可以同時用於chrome和瀏覽器對象。

1

瀏覽器和Chrome API都可以在Edge中使用,但請確保您不會混淆和匹配。使用所有的一個或另一個。

+0

謝謝你讓我知道。是的,我們不是在混合它們。我們實際上是用自己的代碼封裝了瀏覽器API,所以如果我們需要改變它的工作方式,我們的代碼仍然可以與我們交換的任何東西一起工作。 –

相關問題