chrome.tabs.sendMessageは、拡張機能のバックグラウンドスクリプトやポップアップスクリプトから特定のタブ上のコンテントスクリプトへメッセージを送信するためのAPIです。これは、拡張機能の異なるコンポーネント間で情報をやり取りする際に非常に重要な手段です。
基本構文
パラメータ:
-
tabId: メッセージを送信したいタブのID(整数)。 -
message: 送信するデータ(任意のJSON互換オブジェクト)。 -
options(省略可): オプション(例:frameIdを指定してフレームを特定)。 -
callback(省略可): コンテントスクリプトからの応答を処理する関数。
使用例
1. バックグラウンドスクリプトから現在のアクティブタブにメッセージを送る
2. コンテントスクリプト側での受信処理
主な用途
-
ポップアップボタンを押したときに、現在表示中のタブ内のDOMを操作する。
-
バックグラウンドスクリプトが何らかの処理(例: タイマーやイベント)をトリガーし、タブ内でアクションを実行させる。
注意点
-
事前に content script を対象タブに注入しておく必要があります。
-
manifest.jsonにて"content_scripts"を定義するか、chrome.scripting.executeScriptで動的に注入する必要があります。
-
-
非アクティブタブや存在しないタブに送るとエラーになります。
-
chrome.runtime.lastErrorを確認してエラー処理を行うことが推奨されます。
-
runtime.sendMessage との違い
runtime.sendMessage との違い| 比較項目 | runtime.sendMessage |
tabs.sendMessage |
|---|---|---|
| 通信の対象 | 全体(background, popup, contentなど) | 特定タブのcontent script |
| タブ指定の要否 | 不要 | 必要(tabId を指定) |
| 代表的な用途 | 汎用通信、拡張機能間の情報共有 | タブ内DOMへの指示、ユーザーアクションの反映 |
まとめ
-
chrome.tabs.sendMessageは、拡張機能の外部からタブ内のスクリプトにメッセージを送る手段。 -
通常、バックグラウンドやポップアップから、コンテントスクリプトに対する命令送信に用いる。
-
タブ操作やDOM制御と組み合わせて、ユーザー操作に動的に反応させる用途に最適です。
生成日:2025/05/18