Chrome Extension開発を勉強してみる (1) - background_pageとgetBackgroundPage -

2012-05-21T00:00:00+00:00 Chrome Extension JavaScript

バックグラウンドページに関してなんですが、そいつ本体自体の話ではなくてブラウザアクション等からバックグラウンドページに定義されているJavaScript等を取得して実行する方法

といってもちゃんとブラウザアクション等からバックグラウンドページを取得するchrome.extension.getBackgroundPageっていうのがある。なのでこれを使う。っていう事でこれを使ってブラウザアクション側からバックグラウンドページに定義したJavaScript関数を使ってみる

manifest.json

{
  "name": "test",
  "description": "test",
  "version": "1.0",
  "background_page": "background.html",
  "browser_action": {
    "default_icon": "icon.png",
    "default_text": "test",
    "popup": "popup.html"
  }
}

まぁ適当に。今回ブラウザアクションとバックグラウンドページの両方を使うのでbackground_pageとpopupを定義しておく

background.html

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  </head>
  <body>
    <script type="text/javascript">
function say() {
  alert("ダァシェリアス!!");
}
    </script>
  </body>
</html>

簡単に言うとブラウザアクションから定義されたJavaScript関数(say)を使うという事をやる

popup.html

<html>
  <body>
    <script type="text/javascript">
(function() {
var bgPage = chrome.extension.getBackgroundPage();

bgPage.say();
})();
    </script>
  </body>
</html>

上記で書いたようにchrome.extension.getBackgroundPageにてバックグラウンドページが取得出来るので、そこからsayな関数を取得する事が出来る

用途的な事書くとブラウザアクションとバックグラウンドページで同一なJavaScriptを読み込んだりしなくても、バックグラウンドページ側で読み込んでおけば、getBackgroundPageを仲介する事で別途ロードしたりする必要は無いみたいだし、そもそも常駐して何かをする場合な処理はブラウザアクション側で定義するべきでは無いはずので、そういうのはバックグラウンドページに定義してそれをブラウザアクションから使用したい場合には仲介して使用するっていうのがベターだと思われる

Chrome Extension開発を勉強してみる (2) - background pageでWebSocket管理 - KVMを勉強してみる