Aller au contenu principal

Support des extensions Chrome

Electron prend en charge un sous-ensemble de l'API Chrome Extensions, principalement pour prendre en charge les extensions DevTools et les extensions internes à Chromium, mais il peut supporter d'autres possibilités d'extension.

Note : Electron ne prend pas en charge n'importe quelle extension de Chrome depuis le store, ceci serait hors des objectifs du projet Electron qui ne vise pas a être parfaitement compatible avec l'implémentation des extensions de Chrome.

Chargement des extensions

Electron ne prend en charge que les extensions non empaquetées (i.e les fichiers .crx ne sont pas acceptés). Les extensions sont installées par-session. Pour charger une extension, vous devez utiliser ses.loadExtension:

const { session } = require('electron')

session.defaultSession.loadExtension('path/to/unpacked/extension').then(({ id }) => {
// ...
})

Les extensions chargées ne seront pas automatiquement mémorisées après une sorties ; si vous n'appelez pas loadExtension lorsque l'application s'exécute, l'extension ne sera pas chargée.

Notez que le chargement d'extensions n'est pris en charge que dans les sessions persistantes. Tenter de charger une extension dans une session en mémoire générera une erreur.

Voir la documentstion sur session pour plus de détails à propos du chargement, déchargement et interrogations des extensions actives.

APIs d'extensions prises en charge

Nous prenons en charge les API d'extensions suivantes, avec cependant quelques mises en garde. D'autres APIs peuvent être également prises en charge mais sont provisoires et peuvent être supprimées si non listées ci-dessous.

chrome.devtools.inspectedWindow

Toutes les fonctionnalités de cette API sont prises en charge.

chrome.devtools.network

Toutes les fonctionnalités de cette API sont prises en charge.

chrome.devtools.panels

Toutes les fonctionnalités de cette API sont prises en charge.

chrome.extension

Les propriétés suivantes de chrome.extension sont prises en charge :

  • chrome.extension.lastError

Les méthodes suivantes de chrome.extension sont prises en charge :

  • chrome.extension.getURL
  • chrome.extension.getBackgroundPage

chrome.runtime

Les propriétés suivantes de chrome.runtime sont prises en charge :

  • chrome.runtime.lastError
  • chrome.runtime.id

Les méthodes suivantes de chrome.runtime sont prises en charge :

  • chrome.runtime.getBackgroundPage
  • chrome.runtime.getManifest
  • chrome.runtime.getPlatformInfo
  • chrome.runtime.getURL
  • chrome.runtime.connect
  • chrome.runtime.sendMessage
  • chrome.runtime.reload

Les événements suivants de chrome.runtime sont pris en charge :

  • chrome.runtime.onStartup
  • chrome.runtime.onInstalled
  • chrome.runtime.onSuspend
  • chrome.runtime.onSuspendCanceled
  • chrome.runtime.onConnect
  • chrome.runtime.onMessage

chrome.storage

Seul chrome.storage.local est pris en charge ; chrome.storage.sync et chrome.storage.managed ne le sont pas.

chrome.tabs

Les méthodes suivantes de chrome.tabs sont prises en charge :

  • chrome.tabs.sendMessage
  • chrome.tabs.reload
  • chrome.tabs.executeScript
  • chrome.tabs.update (prise en charge partielle)
    • propriétés prises en charge : url, muted.

remarque : avec Chrome, le passage de l'’ID d’onglet -1 signifie « onglet actuellement actif ». Comme ce concept n'existe pas avec Electron le passage d'un ID d'onglet -1 n’est pas pris en charge et entraînera une erreur.

chrome.management

Les méthodes suivantes de chrome.management sont prises en charge :

  • chrome.management.getAll
  • chrome.management.get
  • chrome.management.getSelf
  • chrome.management.getPermissionWarningsById
  • chrome.management.getPermissionWarningsByManifest
  • chrome.management.onEnabled
  • chrome.management.onDisabled

chrome.webRequest

Toutes les fonctionnalités de cette API sont prises en charge.

REMARQUE : Le module webRequest d’Electron est prioritaire sur chrome.webRequest en cas de conflit de gestionnaires.