420e834a31
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Erick Zhao <erick@hotmail.ca>
175 lines
5.6 KiB
Markdown
175 lines
5.6 KiB
Markdown
# Chrome Extension Support
|
|
|
|
Electron supports a subset of the [Chrome Extensions API][chrome-extensions-api-index],
|
|
primarily to support DevTools extensions and Chromium-internal extensions,
|
|
but it also happens to support some other extension capabilities.
|
|
|
|
[chrome-extensions-api-index]: https://developer.chrome.com/extensions/api_index
|
|
|
|
> **Note:** Electron does not support arbitrary Chrome extensions from the
|
|
> store, and it is a **non-goal** of the Electron project to be perfectly
|
|
> compatible with Chrome's implementation of Extensions.
|
|
|
|
## Loading extensions
|
|
|
|
Electron only supports loading unpacked extensions (i.e., `.crx` files do not
|
|
work). Extensions are installed per-`session`. To load an extension, call
|
|
[`ses.loadExtension`](session.md#sesloadextensionpath-options):
|
|
|
|
```js
|
|
const { session } = require('electron')
|
|
|
|
session.defaultSession.loadExtension('path/to/unpacked/extension').then(({ id }) => {
|
|
// ...
|
|
})
|
|
```
|
|
|
|
Loaded extensions will not be automatically remembered across exits; if you do
|
|
not call `loadExtension` when the app runs, the extension will not be loaded.
|
|
|
|
Note that loading extensions is only supported in persistent sessions.
|
|
Attempting to load an extension into an in-memory session will throw an error.
|
|
|
|
See the [`session`](session.md) documentation for more information about
|
|
loading, unloading, and querying active extensions.
|
|
|
|
## Supported Extensions APIs
|
|
|
|
We support the following extensions APIs, with some caveats. Other APIs may
|
|
additionally be supported, but support for any APIs not listed here is
|
|
provisional and may be removed.
|
|
|
|
### Supported Manifest Keys
|
|
|
|
- `name`
|
|
- `version`
|
|
- `author`
|
|
- `permissions`
|
|
- `content_scripts`
|
|
- `default_locale`
|
|
- `devtools_page`
|
|
- `short_name`
|
|
- `host_permissions` (Manifest V3)
|
|
- `manifest_version`
|
|
- `background` (Manifest V2)
|
|
- `minimum_chrome_version`
|
|
|
|
See [Manifest file format](https://developer.chrome.com/docs/extensions/mv3/manifest/) for more information about the purpose of each possible key.
|
|
|
|
### `chrome.devtools.inspectedWindow`
|
|
|
|
All features of this API are supported.
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/devtools_inspectedWindow) for more information.
|
|
|
|
### `chrome.devtools.network`
|
|
|
|
All features of this API are supported.
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/devtools_network) for more information.
|
|
|
|
### `chrome.devtools.panels`
|
|
|
|
All features of this API are supported.
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/devtools_panels) for more information.
|
|
|
|
### `chrome.extension`
|
|
|
|
The following properties of `chrome.extension` are supported:
|
|
|
|
- `chrome.extension.lastError`
|
|
|
|
The following methods of `chrome.extension` are supported:
|
|
|
|
- `chrome.extension.getURL`
|
|
- `chrome.extension.getBackgroundPage`
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/extension) for more information.
|
|
|
|
### `chrome.management`
|
|
|
|
The following methods of `chrome.management` are supported:
|
|
|
|
- `chrome.management.getAll`
|
|
- `chrome.management.get`
|
|
- `chrome.management.getSelf`
|
|
- `chrome.management.getPermissionWarningsById`
|
|
- `chrome.management.getPermissionWarningsByManifest`
|
|
|
|
The following events of `chrome.management` are supported:
|
|
|
|
- `chrome.management.onEnabled`
|
|
- `chrome.management.onDisabled`
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/management) for more information.
|
|
|
|
### `chrome.runtime`
|
|
|
|
The following properties of `chrome.runtime` are supported:
|
|
|
|
- `chrome.runtime.lastError`
|
|
- `chrome.runtime.id`
|
|
|
|
The following methods of `chrome.runtime` are supported:
|
|
|
|
- `chrome.runtime.getBackgroundPage`
|
|
- `chrome.runtime.getManifest`
|
|
- `chrome.runtime.getPlatformInfo`
|
|
- `chrome.runtime.getURL`
|
|
- `chrome.runtime.connect`
|
|
- `chrome.runtime.sendMessage`
|
|
- `chrome.runtime.reload`
|
|
|
|
The following events of `chrome.runtime` are supported:
|
|
|
|
- `chrome.runtime.onStartup`
|
|
- `chrome.runtime.onInstalled`
|
|
- `chrome.runtime.onSuspend`
|
|
- `chrome.runtime.onSuspendCanceled`
|
|
- `chrome.runtime.onConnect`
|
|
- `chrome.runtime.onMessage`
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/runtime) for more information.
|
|
|
|
### `chrome.scripting`
|
|
|
|
All features of this API are supported.
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/scripting) for more information.
|
|
|
|
### `chrome.storage`
|
|
|
|
The following methods of `chrome.storage` are supported:
|
|
|
|
- `chrome.storage.local`
|
|
|
|
`chrome.storage.sync` and `chrome.storage.managed` are **not** supported.
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/storage) for more information.
|
|
|
|
### `chrome.tabs`
|
|
|
|
The following methods of `chrome.tabs` are supported:
|
|
|
|
- `chrome.tabs.sendMessage`
|
|
- `chrome.tabs.reload`
|
|
- `chrome.tabs.executeScript`
|
|
- `chrome.tabs.query` (partial support)
|
|
- supported properties: `url`, `title`, `audible`, `active`, `muted`.
|
|
- `chrome.tabs.update` (partial support)
|
|
- supported properties: `url`, `muted`.
|
|
|
|
> **Note:** In Chrome, passing `-1` as a tab ID signifies the "currently active
|
|
> tab". Since Electron has no such concept, passing `-1` as a tab ID is not
|
|
> supported and will raise an error.
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/tabs) for more information.
|
|
|
|
### `chrome.webRequest`
|
|
|
|
All features of this API are supported.
|
|
|
|
> **NOTE:** Electron's [`webRequest`](web-request.md) module takes precedence over `chrome.webRequest` if there are conflicting handlers.
|
|
|
|
See [official documentation](https://developer.chrome.com/docs/extensions/reference/webRequest) for more information.
|