content_scriptのmatchesやexclude_matchesをオプションで設定したい

356 views
Skip to first unread message

Shinichiro Suzuki

unread,
Mar 23, 2013, 12:51:55 AM3/23/13
to chrome-api-d...@googlegroups.com
はじめましてsuzukiです。
chromeの拡張を作っていて、わからないことがあったので質問させてください。

content_scriptのmatchesやexclude_matchesをオプションページなどでユーザーに設定させることは可能でしょうか?
つまり、やりたいこととしては、その拡張の有効/無効をurlごとにユーザーが設定することを可能にする、ということなんですが、こういったことは可能でしょうか?また、可能な場合はどうやれば実現できますでしょうか?

Yoichiro Tanaka

unread,
Mar 26, 2013, 8:12:11 PM3/26/13
to chrome-api-d...@googlegroups.com
よういちろう です。

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:

Shinichiro Suzuki

unread,
Mar 27, 2013, 7:06:33 AM3/27/13
to chrome-api-d...@googlegroups.com
suzukiです。

よういちろうさん、回答ありがとうございます。
教えていただいた方法で実現できそうですのでやってみます。
ありがとうございました。



2013年3月27日水曜日 9時12分11秒 UTC+9 Yoichiro Tanaka:
Reply all
Reply to author
Forward
0 new messages