Chrome拡張機能におけるバックグラウンドスクリプトとコンテントスクリプトの間の通信は、拡張機能の機能を分離しつつ連携させるために重要な仕組みです。以下にその仕組みと実装方法を詳しく説明します。
1. 通信の目的
-
コンテントスクリプトはWebページのDOMにアクセスできますが、拡張機能の権限を持ちません。
-
バックグラウンドスクリプトは高い権限を持ちますが、WebページのDOMに直接アクセスできません。
このため、両者の役割を分離し、必要に応じてメッセージ通信で情報をやり取りします。
2. 通信方法の概要
バックグラウンドとコンテントスクリプトの間では、以下のメソッドで通信します:
-
chrome.runtime.sendMessage() -
chrome.runtime.onMessage.addListener() -
chrome.tabs.sendMessage()
3. 通信の例
コンテントスクリプトからバックグラウンドへの通信
content_script.js
background.js
バックグラウンドからコンテントスクリプトへの通信
この場合は、対象タブを指定して chrome.tabs.sendMessage を使います。
background.js
content_script.js
4. 注意点
-
sendResponseの使用後に非同期処理をする場合はreturn trueを忘れずに書く。 -
コンテントスクリプトはページの読み込み後に注入されるため、通信前に注入が完了している必要があります。
-
必要に応じて
permissionsやhost_permissionsで対象ドメインを許可する必要があります。
5. まとめ
| 通信元 | 通信先 | 使用メソッド |
|---|---|---|
| コンテントスクリプト | バックグラウンド | chrome.runtime.sendMessage |
| バックグラウンド | コンテントスクリプト | chrome.tabs.sendMessage |
生成日:2025/05/18