Chrome エクステンションのサポート
Electronは、主にDevToolsエクステンションとChromium内部のエクステンションをサポートするために、ChromeエクステンションAPI のサブセットをサポートしていますが、その他いくつかのエクステンション機能もサポートしています。
注記: Electronはストアからの任意のChromeエクステンションをサポートしておらず、Chromeのエクステンション実装との完全な互換性を達成することは、Electronプロジェクトの目標ではありません。
エクステンションの読み込み
Electronは、展開されていないエクステンションの読み込みのみをサポートします(つまり、.crxファイルは機能しません)。エクステンションはsessionごとにインストールされます。エクステンションを読み込むには、ses.loadExtension を呼び出します。
const { session } = require('electron')
session.defaultSession.loadExtension('path/to/unpacked/extension').then(({ id }) => {
  // ...
})
読み込まれたエクステンションは、終了後も自動的に記憶されません。アプリの実行時にloadExtensionを呼び出さない場合、エクステンションは読み込まれません。
エクステンションの読み込みは、永続セッションでのみサポートされていることに注意してください。メモリ内セッションにエクステンションを読み込もうとすると、エラーが発生します。
読み込み、アンロード、アクティブなエクステンションのクエリに関する詳細については、session のドキュメントを参照してください。
サポートされているエクステンションAPI
いくつかの注意点がありますが、次のエクステンションAPIをサポートしています。その他のAPIもサポートされている可能性がありますが、ここにリストされていないAPIのサポートは暫定的であり、削除される可能性があります。
サポートされているマニフェストキー
- name
- version
- author
- permissions
- content_scripts
- default_locale
- devtools_page
- short_name
- host_permissions(マニフェストV3)
- manifest_version
- background(マニフェストV2)
- minimum_chrome_version
各キーの目的の詳細については、マニフェストファイル形式 を参照してください。
chrome.devtools.inspectedWindow
このAPIのすべての機能がサポートされています。
詳細については、公式ドキュメント を参照してください。
chrome.devtools.network
このAPIのすべての機能がサポートされています。
詳細については、公式ドキュメント を参照してください。
chrome.devtools.panels
このAPIのすべての機能がサポートされています。
詳細については、公式ドキュメント を参照してください。
chrome.extension
chrome.extensionの次のプロパティがサポートされています。
- chrome.extension.lastError
chrome.extensionの次のメソッドがサポートされています。
- chrome.extension.getURL
- chrome.extension.getBackgroundPage
詳細については、公式ドキュメント を参照してください。
chrome.management
chrome.managementの次のメソッドがサポートされています。
- chrome.management.getAll
- chrome.management.get
- chrome.management.getSelf
- chrome.management.getPermissionWarningsById
- chrome.management.getPermissionWarningsByManifest
chrome.managementの次のイベントがサポートされています。
- chrome.management.onEnabled
- chrome.management.onDisabled
詳細については、公式ドキュメント を参照してください。
chrome.runtime
chrome.runtimeの次のプロパティがサポートされています。
- chrome.runtime.lastError
- chrome.runtime.id
chrome.runtimeの次のメソッドがサポートされています。
- chrome.runtime.getBackgroundPage
- chrome.runtime.getManifest
- chrome.runtime.getPlatformInfo
- chrome.runtime.getURL
- chrome.runtime.connect
- chrome.runtime.sendMessage
- chrome.runtime.reload
chrome.runtimeの次のイベントがサポートされています。
- chrome.runtime.onStartup
- chrome.runtime.onInstalled
- chrome.runtime.onSuspend
- chrome.runtime.onSuspendCanceled
- chrome.runtime.onConnect
- chrome.runtime.onMessage
詳細については、公式ドキュメント を参照してください。
chrome.scripting
このAPIのすべての機能がサポートされています。
詳細については、公式ドキュメント を参照してください。
chrome.storage
chrome.storageの次のメソッドがサポートされています。
- chrome.storage.local
chrome.storage.syncとchrome.storage.managedはサポートされていません。
詳細については、公式ドキュメント を参照してください。
chrome.tabs
chrome.tabsの次のメソッドがサポートされています。
- chrome.tabs.sendMessage
- chrome.tabs.reload
- chrome.tabs.executeScript
- chrome.tabs.query(部分的にサポート)- サポートされているプロパティ: url、title、audible、active、muted。
 
- サポートされているプロパティ: 
- chrome.tabs.update(部分的にサポート)- サポートされているプロパティ: url、muted。
 
- サポートされているプロパティ: 
注記: Chromeでは、タブIDとして
-1を渡すと「現在アクティブなタブ」を示します。Electronにはそのような概念がないため、タブIDとして-1を渡すことはサポートされておらず、エラーが発生します。
詳細については、公式ドキュメント を参照してください。
chrome.webRequest
このAPIのすべての機能がサポートされています。
注記: 衝突するハンドラーがある場合、Electronの
webRequestモジュールがchrome.webRequestよりも優先されます。
詳細については、公式ドキュメント を参照してください。