よういちろう です。
matchesやexclude_matchesを使っているということは、manifest.jsonファイルに
「静的に」定義しているってことになります。つまり、content_scriptの実行タイミング
をChrome側に任せているわけです。この定義を動的に変更する機能は現状ではないと
思います。
これとは別に、拡張機能のJavaScriptから好きなタイミングでcontent_scriptを実行
する(Injectionさせる、とも言います)ことができます。Chrome APIのリファレンス
で「Programmatic injection」という名前でその手順が紹介されています。
suzukiさんのやりたいことであれば、tabの更新イベントを監視して、そのtabのURL
と、ユーザが設定したパターンと比較してcontent_scriptをexecするかどうか決める、
っていう感じでできると思います。例えば以下のように。
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (matchUrlPattern(tab.url)) {
chrome.tabs.executeScript(tabId, {
file: "your_script_file_path"
}, function(results) {
...
}
}
});
matchUrlPattern関数内で、オプションページで設定されたユーザのURLパターンと
引数で渡されたタブのURLが一致するかどうかを検証する、っていう処理を書けば
いいかと思います。
ご参考になれば幸いです。ではでは。
2013年3月23日土曜日 13時51分55秒 UTC+9 Shinichiro Suzuki: