10/16/2010

開いている全てのタブに処理を走らせる [Chrome Extensions を作ってみる:第八回]

Safari Extensions の場合 と同様に、読み込んだページに挿入したでユーザーが変更した場合、有効なのは操作しているタブに限られてしまう。そこで、ユーザーが設定を保存するタイミングで、開いている全てのタブに処理を走らせ、設定の同期を行う必要が出てくる。

記述は Safari Extension よりも長くなるけど、同じように全てのウィンドウを取得し、タブを取得し、それぞれに処理を走らせることができる。

以下は、background_page から全てのタブに chgSettings の処理を走らせる場合。

★background_page 内の Javascript
// 全てのウィンドウを取得する
chrome.windows.getAll({populate: true}, function(windows) {
  for (var w in windows) {
// 全てのタブを取得する
    var tabs = windows[w].tabs;
    for (var t in tabs) {
      chrome.tabs.sendRequest(tabs[t].id, {action: "chgSettings", text: "xxx"});
    }
  }
});

ちなみに、manifest.json 内にタブを操作する記述を加えないといけない。

★manifest.json
...
"permissions": ["tabs"],
...

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.