MENU
  • ブログBlog
  • プロフィールProfile
  • ポートフォリオPortfolio
  • お問い合わせContact
  • お絵描き道場drawing dojo
「社会不適合者の生き方」
くじらいどブログ
  • ブログBlog
  • プロフィールProfile
  • ポートフォリオPortfolio
  • お問い合わせContact
  • お絵描き道場drawing dojo
くじらいどブログ
  • ブログBlog
  • プロフィールProfile
  • ポートフォリオPortfolio
  • お問い合わせContact
  • お絵描き道場drawing dojo
  1. ホーム
  2. PC
  3. 手軽に始めるchrome拡張機能開発V3 メッセージパッシング

手軽に始めるchrome拡張機能開発V3 メッセージパッシング

2024 11/07
PC プログラミング
2022年10月4日2024年11月7日

今回は、chrome拡張機能のバックグラウンドやアクション、コンテンツスクリプトを連携(値を送ったり、受け取ったり)するのに必要なメッセージパッシングについて解説しようと思います。

あわせて読みたい
手軽に始めるchrome拡張機能開発 V3対応 chrome拡張機能は、chromeウェブストアでダウンロードできますが、自分で拡張機能を作成してローカルで使用したり、chromeウェブストアに公開して一般のユーザーに使っ…

コンテキストメニュー(右クリック)の実装の必要がないコンテンツスクリプトだけの拡張機能や前記事で解説しましたmemo memoのようなポップアップで入力・保存・表示するだけの拡張機能にはメッセージパッシングは必要はありませんが、ポップアップで設置したボタンを押した際に、コンテンツスクリプトでDOMの要素を取得したりDOMの要素にポップアップで入力した値を入力したりする拡張機能になるとメッセージパッシングは必須になります。

メッセージパッシングとは、chrome拡張機能において、お互いが直接干渉できない世界で通信をするための決まり事という風に考えていただいて良いと思います。

目次

メッセージパッシングを使ってchrome拡張機能内で値を受け渡す

コンテンツスクリプト→chrome拡張側スクリプト

コンテンツスクリプト(Webページに適用するスクリプト)からchrome拡張側のスクリプト(ポップアップやservice_worker)にメッセージを送信するには、『chrome.runtime.sendMessage()』を使用します。

第一引数の送信するデータにはオブジェクトを指定することも可能なようです。

// 送信側
chrome.runtime.sendMessage('送りました', function (response) {
  // ここに受信側からレスポンスが返ってきた時にする処理を記述する。
  console.log(response); // sendResponse で送り返された '送ってくれてありがとう' が表示される
});

コンテンツスクリプト(Webページに適用するスクリプト)がchrome拡張側のスクリプト(ポップアップやservice_worker)からメッセージを受信するには、『chrome.runtime.onMessage()』を使用します。

sendResponseを使えば受信するだけでなく送信側に情報を返すこともできます。

//受信側
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
  console.log(request); // 文字'送りました'が返ってくる
  console.log(sender); // 送信時のタブの情報が返ってくる(タブのIDやURLなどの情報)
  sendResponse('送ってくれてありがとう'); // 送信側に送り返したい情報を記入する
});

chrome拡張側スクリプト→コンテンツスクリプト

chrome拡張側のスクリプト(ポップアップやservice_worker)からコンテンツスクリプト(Webページに適用するスクリプト)へメッセージを送信するには、『chrome.tabs.sendMessage』を使用します。
chrome.tabs.sendMessagの第一引数に送信するタブのIDが必要なため、chrome.tabs.queryでタブの情報を取得しています。

//送信側
//chrome.tabs.queryでタブの情報を取得する(chrome.tabs.sendMessageの際に送信するタブのIDが必要なため)
chrome.tabs.query({
  active: true,
  currentWindow: true
}, function (tab) {
  // chrome.tabs.sendMessageの第二引数は送信する情報(自由に決めて可)。
  chrome.tabs.sendMessage(tab[0].id, '送りました', function (response) {
    //ここに受信側からレスポンスが返ってきた時にする処理を記述する。
    console.log(response); //sendResponse で送り返された '送ってくれてありがとう' が表示される
  })
})

chrome拡張側のスクリプト(ポップアップやservice_worker)がコンテンツスクリプト(Webページに適用するスクリプト)からメッセージを受信するには、『chrome.runtime.onMessage()』を使用します。

//受信側
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
  console.log(request); // 文字'送りました'が返ってくる
  console.log(sender); // 送信時のタブの情報が返ってくる(タブのIDやURLなどの情報)
  sendResponse('送ってくれてありがとう'); // 送信側に送り返したい情報を記入する
})

以下に、箇条書きでコンテンツスクリプトとサービスワーカー間でのメッセージパッシングの手順の説明をまとめてみました。

  • コンテンツスクリプトからのメッセージ送信:
    • コンテンツスクリプト内で、chrome.runtime.sendMessage()メソッドを使用してメッセージを送信します。
    • 送信するメッセージは、オブジェクト形式で指定します。必要に応じてデータや任意のパラメータを含めることができます。
  • サービスワーカーでのメッセージ受信:
    • サービスワーカー内で、chrome.runtime.onMessageイベントをリッスンしてメッセージを受信します。
    • イベントハンドラ内で、受信したメッセージを処理します。
  • サービスワーカーからのメッセージ送信:
    • サービスワーカー内で、chrome.tabs.sendMessage()メソッドを使用してメッセージを送信します。
    • 送信するメッセージのターゲットとなるタブを指定する必要があります。通常、タブIDやタブのURLを使用して特定のタブに送信します。
  • コンテンツスクリプトでのメッセージ受信:
    • コンテンツスクリプト内で、chrome.runtime.onMessageイベントをリッスンしてメッセージを受信します。
    • イベントハンドラ内で、受信したメッセージを処理します。

このようにして、コンテンツスクリプトとサービスワーカー間でデータを送受信することができます。メッセージパッシングを使用することで、拡張機能内の異なるコンポーネント間で情報を共有したり、タスクを委任したりすることができます。

注意点として、メッセージパッシングは非同期的な操作であり、データの送信と受信が即座に行われない場合があります。そのため、適切なコールバックやプロミスの処理を行うことが重要です。また、メッセージパッシングには制限があり、送信可能なデータのサイズに制限があることにも注意が必要です。

まとめ

以上、javascript超初心者が解説するchrome拡張機能のメッセージパッシングについてのお話でした。

間違っている箇所もあるかと思いますので(なんせまだfor文も書いたことが無いプログラミング初心者なので・・・(笑))色んな方の記事を参考にchrome拡張機能についての知識を吸収していってもらえればと思います。
またご感想・ご指摘等ありましたらコメントしていただければ幸いです。

記事を最後までお読みいただきありがとうございました。

それでは、さようなら。

PC プログラミング
Chrome拡張機能 JavaScript プログラミング
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 手軽に始めるchrome拡張機能開発 V3対応
  • Excel 2013 印刷範囲を1ページにまとめる方法

この記事を書いた人

くじらいどのアバター くじらいど

アラサー社会不適合者のくじらいどです。

普段は、youtubeで動画投稿やこのサイトでブログ投稿をしています。

喘息、アトピー、鼻炎持ち
教育失敗の世間知らず

自分にできることをやるだけ

関連記事

  • Google Chrome 最新バージョンに更新する方法
    2024年11月17日
  • Google Chromeで動作が遅くなる原因と対処法
    2024年10月18日
  • Googleドライブの容量を節約する方法とは?
    2024年10月16日
  • 無料で便利!定番オンラインバックアップサービス5選
    2024年10月16日
  • Windows 10 隠しファイルを表示する簡単な方法
    2024年10月15日
  • Microsoft Edgeのフィードを非表示にする方法、背景画像の変更方法、テーマ設定方法
    2024年10月11日
  • Windows10 で既定のアプリを変更する方法
    2024年10月11日
  • Windows 10 ファイルの拡張子を表示させる方法
    2024年10月9日

コメント

コメント一覧 (9件)

  • Manifest V3、ブラウザ拡張機能のアレに対応した解説動画。 | 風が吹いている/zip358.com より:
    2022年11月2日 6:00 AM

    […] あと、backgroundとcontent_scriptsの送受信の関係などが記載されているサイトを見つけたので、そちらもリンクを貼っときます、こちらのページになります。 […]

    返信
  • chickensblog より:
    2022年12月12日 11:29 PM

    popup.jsからcontent_scritptsに送信するのはよく見つかったのですが、逆のcontent_scritptsからpopup.jsに送信する方法が見つけられなかったため非常に参考になりました。ありがとうございます。

    返信
    • くじらいど より:
      2022年12月14日 5:31 PM

      コメントありがとうございます。
      こんな初心者のブログを見てくださりありがとうございます!
      じゃんじゃん拡張機能作ってください!

      返信
  • Lvivforum.Pp.ua より:
    2024年10月18日 1:38 AM

    Pretty section of content. I just stumbled upon your weblog and in accession capital to claim that I acquire actually enjoyed account your blog posts.
    Any wayy I will bbe subscribing on your feeds or even I achievement you get right of ejtry to consistently rapidly. https://Lvivforum.Pp.ua/

    返信
    • くじらいど より:
      2024年10月18日 7:40 PM

      Thank you for your comment! I’m glad you’re enjoying the blog. We will continue to do our best to provide you with useful information, so please come visit us again!

      返信
  • Xyberbara より:
    2024年10月26日 3:50 AM

    Great explanation! Message passing is indeed essential for Chrome extensions that interact with the DOM, as it bridges communication between isolated parts of the extension. Thanks for clarifying when it’s necessary and how it works!

    返信
    • くじらいど より:
      2024年10月26日 9:09 PM

      Thank you for visiting my blog. Although I’m not an engineer and don’t have extensive knowledge, I’m glad I could be of help to you.

      返信
  • Norbert's Flow より:
    2024年12月23日 7:08 AM

    You’re awesome!

    返信
    • くじらいど より:
      2024年12月23日 9:59 AM

      thank you

      返信

Manifest V3、ブラウザ拡張機能のアレに対応した解説動画。 | 風が吹いている/zip358.com へ返信する コメントをキャンセル

CAPTCHA

最近の投稿

  • くじランドに遊びに来てね!【くじランド】
  • ぬらりひょんとは? わしが解説する【くじランド】
  • チャンネル登録者数10人を達成しました!
  • チャンネル登録者数1人を達成しました!
  • Youtube投稿始めました!

最近のコメント

  1. 深夜セルフガソリンスタンド監視アルバイトの当たり現場と外れ現場 に Chet Garfinkel より
  2. Google Apps Script (GAS) 初回実行時のアクセス権限の承認方法 に くじらいど より
  3. Google Apps Script (GAS) 初回実行時のアクセス権限の承認方法 に tlover tonet より
  4. Google Chromeのホーム画面の背景を変更する方法(好きな画像に変更) に くじらいど より
  5. Google Apps Script (GAS) シートの値を削除する方法 に くじらいど より

アーカイブ

  • 2025年3月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2023年7月
  • 2023年6月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月

カテゴリー

  • PC
  • お知らせ
  • デザイン
  • プログラミング
  • 体験談
  • 日常
くじらいど
社会不適合者 / 趣味クリエイター
アラサー社会不適合者のくじらいどです。

普段は、youtubeで動画投稿やこのサイトでブログ投稿をしています。

喘息、アトピー、鼻炎持ち
教育失敗の世間知らず

自分にできることをやるだけ

プロフィール
目次
  • X
  • YouTube
  • Mail
  • 運営者情報
  • プライバシーポリシー
  • お問い合わせ

© くじらいどブログ.

  • メニュー
  • 検索
  • 目次
  • トップへ
目次