3

Donc, je ne pouvais pas trouver quelque chose qui parlait d'utiliser chrome. * Ou un navigateur. * Spécifiquement. Dans certains des exemples WebExtension, il utilise le navigateur. * (browser.runtime.getManifest();) https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/getManifest, et dans d'autres, il utilise le chrome. * (chrome.notifications.create), https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/notifications.Firefox/Chrome/MS extensions Edge en utilisant chrome. * Ou un navigateur. *

Je ne suis pas entièrement sûr de la différence. Est-ce contextuel? Les deux chrome. * Et navigateur. * Sont disponibles dans mon script de contenu et dans le script d'arrière-plan dans Firefox. J'ai regardé les documents IEs aussi bien et ils utilisent le navigateur. * (N'a pas vu le chrome. * Dans leurs docs)

Je voudrais savoir quelle est la différence entre et les extensions de chrome utilisent seulement le chrome. * Ou a-t-il un navigateur. * aussi (est-ce que IE a seulement un navigateur. *)?

+0

Très lié, potentiellement un doublon: [Utilisation de chrome.tabs vs browser.tabs pour la compatibilité du navigateur] (http://stackoverflow.com/questions/39544625/using-chrome-tabs-vs-browser-tabs-for- compatibilité avec les navigateurs) – Makyen

Répondre

4

Chrome a uniquement chrome.apis. Edge a seulement browser.apis. Firefox a à la fois browser.apis et chrome.apis pour la compatibilité avec les extensions Chrome existantes.

La principale différence est que dans Firefox, browser.apis utilise des promesses mais les callbacks de chrome.apis.

+0

Chrome.apis utilise également des rappels? J'ai aussi rapidement recherché browser.storage de Edge, il n'utilise pas les promesses? Fondamentalement, je suis à la recherche de la façon la plus cross-navigateur compatible sans avoir à aller et à changer tous les JS https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/9420301/ fichier où le * .api est appelé entre les différents navigateurs ou est-ce que ça va arriver? –

+0

Pour noter, je développe dans Firefox et en utilisant ses promesses de navigateur. *. –

+1

@KnightYoshi, Si vous voulez une compatibilité croisée, utilisez 'chrome. *', Pas 'browser. *' Il est relativement facile de polyfiler des appels 'chrome. *' (Callback) vers leur '' browser ''. '' (Promise) équivalents . Il est difficile de faire l'inverse car les informations de fonction de rappel n'existent pas dans l'appel API lorsque vous appelez une API 'browser. *'. En outre, même si vous ne remplissez pas de polyfill, l'utilisation de chrome. * 'Vous donne Chrome et Firefox. ensemble ces deux vous donnent la majorité du marché (vous pouvez polyfill pour le reste). – Makyen

0

Je pense que votre meilleure solution pour l'instant est d'utiliser des rappels au lieu de promesses car ils fonctionnent pour chrome, firefox et edge. En outre, vous pouvez utiliser quelque chose comme browser = browser || chrome; pour résoudre le problème chrome vs navigateur et browser.runtime.lastError; pour la gestion des erreurs. Firefox prend en charge à la fois la version de rappel et de promesse de l'API, la version de rappel fonctionnera à la fois pour les objets chrome et navigateur.

1

Les API navigateur et chrome fonctionnent dans Edge, mais assurez-vous de ne pas mélanger et faire correspondre. Utilisez tous les uns ou les autres.

+0

Merci de me le faire savoir. Oui, on ne les mélange pas. En fait, nous enveloppons les API du navigateur avec notre propre code afin que, si nous avons besoin de changer notre fonctionnement, notre code fonctionne toujours avec ce que nous échangeons. –