2012-04-16 22 views
1

をコンテンツスクリプトのexclude_matchesを設定し、あなたは彼らが中に注入された何ページを制御するためにmatchesexclude_matchesを指定することができます。これは、このが動的にChromeの拡張機能でChromeの拡張機能のコンテンツスクリプトの場合

のような拡張のマニフェストで指定する必要があります
{ 
    "name": "Color picker", 
    ... 
    "content_scripts": [ 
    { 
     "matches": ["http://*/*", "https://*/*"], 
     "exclude_matches": ["http://www.google.com/*"], 
     "css": ["color_picker.css"], 
     "js": ["jquery.js", "color_picker.js"] 
    } 
    ], 
    ... 
} 

["http://www.yahoo.com/*"],exclude_matchesに追加することができるかどうかは、拡張機能が使用されているのと同じですか?このようにして、私はユーザーに制御を許可することができますexclude_matches

答えて

7

拡張子は、拡張子manifest.jsonを含むローカルファイルを変更することはできません。 Chromeはoptional permissionsのAPIを提供していますが、Content scriptsは含まれていません。

手動で柔軟なパターンを作成することができます必要はありませんけれども

// In the content script: 
var exclude = /^https?:\/\/(www\.)?yahoo\.com\//; 
if (!exclude.test(location.href)) { 
    // Run logic. 
} 

正規表現は、この目的のためには非常に強力です。 の代わりに、location.hostなどの他のlocationのプロパティを使用できます。

また、MDN: window.locationも参照してください。

2

はあなたの拡張機能が決しては何をしなければならないかの「ハード」限界としてexclude_matchesと考えることができます - 要するに、それはページの種類は、あなたのコンテンツスクリプトが触れないべきで恒久的な境界を設定します。恒久化する予定であるため、即座に変更する方法はありません。

しかし、柔軟性を持たせたい場合は、注射をプログラム的に行う必要があります。 GoogleはexecuteScriptを使用してこれを行う方法についてdocumentationを持っています。ユーザーがコントロールするリストを使用して独自の除外ロジックを追加する必要があります(おそらく他の回答の良いアドバイスを使用する必要があります)。

関連する問題