content.jsとbackground.js

Chrome拡張についての話です

chrome拡張を作ろうとする時には以下の3つのファイルが必要になります

  • manifest.json
  • content.js
  • background.js

まあ正確にはcontent.jsはなくてもいいこともあります manifest.jsonchrome拡張についての設定ファイルです

残り二つのjsファイルは何が違うんでしょうか

ちなみに公式にめっちゃわかりやすく書いてあるので時間のある人にはこちらをお勧めします

developer.chrome.com

background.js

background.jsはchrome拡張のイベントハンドラーです backgoundという名の通り、browserのbackgoundで実行されるため ブラウザのどのタブが現在activeかといった情報は持っていません

content.js

webページの読み書きを実行するjsファイルです。 ページ内にロードされて実行されます。background.jsと違ってどのtabで実行されているという情報も持ちます。 DOMの要素を読んだり、変更したりする処理はcontent.jsに記述します

使い方の例

例えばクローム拡張を使ってPCにインストールされたアプリを起動して、取得した値をwebページに表示しようとします 流れとしては

  • webページでイベントが発生
  • content.jsでイベントをlisten, background.jsへmessageを送信
  • backgound.jsがmessageを受信、nativeアプリへmessageを送信
  • nativeアプリからのresponseをbackgound.jsが受信、content.jsからメッセージを受信した際に付属していた情報をもとにcontent.jsのいるタブへresponseを送信
  • background.jsからのresponseをcontent.jsが受信、responseを元にDOMを変更しwebページに値を表示

となります

文字にするとなかなかわかりずらいな、、