導入から公開まで13時間!Chrome拡張機能の開発[3of6]

バックグラウンドというのは「背景」とか「裏」とかいう意味ですが、Chrome拡張におけるバックグラウンドというのは、拡張機能におけるコアとかメイン機能とかハブ機能を置く場所になるでしょうか。MVC(Model、View、Control)でいえばModel部分ですかね。Googleのコードサンプルを見るとこのバックグラウンドだけのサンプルもあり、必須のコードのようです。

本拡張機能においては主にリクエスト(メッセージ)のやりとりとアイコンをクリックしたときのイベントを掴むところに使っています。対象ページの読み書きおよびパソコンへの書き出し(保存)や読み込みはコンテントスクリプトに、UIはポップアップに任せています。

パソコンへの書き出しや読み込みは、本来このバックグラウンドで行い、コンテントスクリプトとはリクエスト(メッセージ)のやりとりで情報交換すべきだったのかも知れません。簡単な機能なので今回はオプションに対応しませんでしたが、例えばオプションで、パソコンへ保存した情報をリストアップさせて、「削除」「削除しないが対象外にする」の処理させる場合、やはりハブ的な場所に保存されている方が便利だからです。

backgroud.jsのソースコード

/*
* バックグラウンド
*/

$(function(){

// コンテントスクリプトからバックグラウンドへのリクエストをモニタして、
// リクエストがきたら関数(onRequest)を実行する
chrome.extension.onRequest.addListener(onRequest);

// オムニバー右端のアイコンをクリックをモニタして、クリックがあったら
// 関数(onSendRequest)を実行する
chrome.pageAction.onClicked.addListener(onSendRequest);

});

function onRequest(request, sender, sendResponse) {
//  console.log(sender.tab ?
//		"from a content script:" + sender.tab.url :
//		"from the extension");
  if(sender.tab){
    chrome.pageAction.show(sender.tab.id);
  }
  // Return nothing to let the connection be cleaned up.
  sendResponse({});
};

/*
* helloというメッセージを現在選択中のタブ(対象URLを表示しているタブ)に送信する
*/
function onSendRequest() {
  chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
//      console.log(response.farewell);
    });
  });
};

(つづく>>>)

関連する記事

導入から公開まで13時間!Chrome拡張機能の開発[1of6]
導入から公開まで13時間!Chrome拡張機能の開発[2of6]
導入から公開まで13時間!Chrome拡張機能の開発[3of6]
導入から公開まで13時間!Chrome拡張機能の開発[4of6]
導入から公開まで13時間!Chrome拡張機能の開発[5of6]
導入から公開まで13時間!Chrome拡張機能の開発[6of6]

お世話になったリンク

Chrome Extensions API リファレンス
Sample Extensions – Google Chrome Extensions
ぷりんすの開発メモ: Chrome拡張機能のマニフェストVesrsion2対応についてのメモ
ChromeExtensionを作ってみる | ぼんぼるにっき
Chrome Extension でデバッグを行う – 日頃の行い
ハローワークの「求人情報検索」ページ