> chrome.pageAction.onClicked.addListener は add はできるけど remove はできない
> ものでしょうか? コールバック関数の単位で、処理内容を入れ替えられるのが希望です。
onClickedなどのイベントはaddListener のほか、removeListenerとhasListenerを持っていますよ。
http://code.google.com/chrome/extensions/events.html
> 現状は、グローバルなスコープに tabId ごとに状態を保持しておいて、コールバックの
> 中で tabId で処理を入れ替えています。この方法は、少し違和感があるので、もしも
> 経験的なベストプラクティスがあれば、ご紹介いただけると勉強になります。
うーん、確かに微妙なところですね。
chrome.tabs.executeScriptを使えばすこしすっきりするかなと思います。
こんなイメージです(ちゃんと動くか検証していないのですが、ご容赦を…)
var actions = {
load:function(req, sender){
chrome.pageAction.show(sender.tab.id);
},
click:function(req, sender){
chrome.tabs.update(sender.tab.id, { url: url });
}
};
chrome.extension.onRequest.addListener(function(req, sender){
actions[req.action](req, sender);
});
chrome.pageAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});
参考になれば幸いです。
--
太田昌吾 <os0...@gmail.com>
2011年4月1日23:32 nakajiman <naka...@lrlab.to>:
> --
> このメールは Google グループのグループ「Chrome API Developers JP」の登録者に送られています。
> このグループに投稿するには、chrome-api-d...@googlegroups.com にメールを送信してください。
> このグループから退会するには、chrome-api-develop...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/chrome-api-developers-jp?hl=ja からこのグループにアクセスしてください。
>