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
.
- propriétés prises en charge :
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 surchrome.webRequest
en cas de conflit de gestionnaires.