 eca1dd7f8b
			
		
	
	
	
	
	eca1dd7f8b* docs: document supported extensions apis * Update extensions.md * Update README.md * Apply suggestions from code review Co-Authored-By: Mark Lee <malept@users.noreply.github.com> Co-authored-by: Mark Lee <malept@users.noreply.github.com>
		
			
				
	
	
		
			101 lines
		
	
	
	
		
			2.8 KiB
			
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
	
		
			2.8 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):
 | |
| 
 | |
| ```js
 | |
| const { session } = require('electron')
 | |
| 
 | |
| session.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.
 | |
| 
 | |
| 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.
 | |
| 
 | |
| ### `chrome.devtools.inspectedWindow`
 | |
| 
 | |
| All features of this API are supported.
 | |
| 
 | |
| ### `chrome.devtools.network`
 | |
| 
 | |
| All features of this API are supported.
 | |
| 
 | |
| ### `chrome.devtools.panels`
 | |
| 
 | |
| All features of this API are supported.
 | |
| 
 | |
| ### `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`
 | |
| 
 | |
| ### `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.getURL`
 | |
| - `chrome.runtime.connect`
 | |
| - `chrome.runtime.sendMessage`
 | |
| 
 | |
| 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`
 | |
| 
 | |
| ### `chrome.storage`
 | |
| 
 | |
| Only `chrome.storage.local` is supported; `chrome.storage.sync` and
 | |
| `chrome.storage.managed` are not.
 | |
| 
 | |
| ### `chrome.tabs`
 | |
| 
 | |
| The following methods of `chrome.tabs` are supported:
 | |
| 
 | |
| - `chrome.tabs.sendMessage`
 | |
| - `chrome.tabs.executeScript`
 | |
| 
 | |
| > **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.
 |