3

Chrome *またはブラウザ*の使用に関する話題は見つかりませんでした。いくつかのWebExtensionの例では、ブラウザを使用しています。*(browser.runtime.getManifest();https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/getManifest他はクロムを使用しています*(chrome.notifications.create)、https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/notificationschrome。*またはブラウザを使用したFirefox/Chrome/MS Edge拡張*

どういう違いがあるかわかりません。それは文脈的なものですか? chrome。*とbrowser。*は、私のコンテンツスクリプトとFirefoxのバックグラウンドスクリプトで利用できます。私もIEのドキュメントを見て、彼らはブラウザを使用しています*(彼らのドキュメントではクロムを見ていませんでした)

クローム拡張機能はChromeの拡張機能と違いますか?それはブラウザを持っていますか?*(IEはブラウザしか持っていませんか?)

+0

非常に関連性があり、重複する可能性があります:[ブラウザの互換性のためにchrome.tabsとbrowser.tabsを使用する](http://stackoverflow.com/questions/39544625/using-chrome-tabs-vs-browser-tabs-for-ブラウザ互換) – Makyen

答えて

4

クロムはchrome.apisのみです。 Edgeにはbrowser.apisしかありません。 Firefoxには、既存のChrome拡張機能との互換性のためにbrowser.apisとchrome.apisがあります。

主な違いは、Firefoxではbrowser.apisが約束を使用しますが、chrome.apisはコールバックを使用する点です。

+0

クロムのchrome.apisもコールバックを使用していますか?私もすぐに見上げた エッジのbrowser.storage、それは約束を使用していない? https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9420301/ 基本的には、すべてのJSを変更せずに、クロスブラウザの互換性を最大限に高める方法を探しています* .apiがさまざまなブラウザ間で呼び出されるか、とにかく起こるのでしょうか? –

+0

私はFirefoxで開発しており、ブラウザからの約束を利用しています。 –

+1

@KnightYoshi、ブラウザ間の互換性が必要な場合は、 'browser。*'ではなく 'chrome。*'を使用してください。 'chrome。*'(コールバック)から 'browser。*'(Promise) 。 'browser。*' APIを呼び出すときにコールバック関数情報がAPI呼び出しに存在しないため、逆を行うことは困難です。また、polyfillを使わなくても、 'chrome。* 'を使うとChromeとFirefoxができます。一緒にこれらの2つは、市場の大部分を与える(あなたは残りのためにpolyfillすることができます)。 – Makyen

0

あなたの最高の解決策は、chrome、firefox、およびedgeで動作するため、約束の代わりにコールバックを使用することです。さらに、クロムとブラウザの問題を解決するのに browser = browser || chrome;、エラー処理のためにbrowser.runtime.lastError;のようなものを使うことができます。 Firefoxは、コールバックと約束バージョンのAPIをサポートしており、コールバックバージョンはクロムとブラウザオブジェクトの両方で機能します。

1

EdgeではブラウザAPIとクロムAPIの両方が機能しますが、混在しないようにしてください。どちらか一方を使用してください。

+0

私にそれを知らせてくれてありがとう。ええ、私たちはそれらを混ぜ合わせていない。実際にはブラウザAPIを独自のコードでラッピングしていますので、コードの動作方法を変更する必要があれば、コードはスワップしても機能します。 –

関連する問題