この翻訳は不完全です。英語から この記事を翻訳 してください。
Match patternsはURLのグループを指定する方法です。Match patternsはいくつかのURLにマッチします。 Match patterns は幾つかのWebExtension内部の場所で使用されます。特に content scripts をロードする文章を指定するときだったり、 webRequest
リスナーを追加するURLを指定する時に使用します。
match patternを使用するAPIはmatch patternリストの順番にマッチしているか試されて、もしURLにパターンがマッチしているなら適切に実行されます。例をみるなら、manifest.json内のcontent_scripts
キーを参照して下さい。
Match pattern の構造
全てのマッチパターンは文字列で指定します。特別な値"<all_urls>" を除き,マッチパターンは3つのパートから成り立っています。 scheme, host, and pathです。 SchemeとHostの間は "://"で句切られます。
<scheme>://<host><path>
scheme
scheme コンポーネントは2つのformのうち、どちらかを指定します。
Form | Matches |
---|---|
"*" | "http"か"https"のみ |
One of "http", "https", "file", "ftp", "app". | 指定したスキームのみ |
host
hostコンポーネントは3つのうちどれか一つを取ります。
Form | Matches |
---|---|
"*" | すべてのホスト。 |
"*."ホスト名の一部分が続きます。 | ホスト名は指定されていますが、サブドメインはなんでもいいです。 |
ワイルドカード無しのホスト名 | そのホストのみ |
"file"スキームだけは、hostコンポーネントはオプションです。
ワイルドカード*はhostの最初のみに適用できることに注意してください。
path
パスコンポーネントは"/"で開始しなければいけません。
その後、ワイルドカード*とURLpathとして許可される文字を一つ以上含むかもしれません。ホストコンポーネントと異なり、パスコンポーネントはワイルドカード*を途中や終わりに含むことができて、さらに一つ以上の*を含められます。
<all_urls>
特殊な値、 "<all_urls>" はサポートしている全てのSchemeのURL( "http", "https", "file", "ftp", "app". )にマッチします。
例
Pattern | マッチする例 | マッチしない例 |
---|---|---|
Match all URLs. |
|
|
Match all HTTP and HTTPS URLs that are hosted at "mozilla.org" or one of its subdomains. |
|
|
HTTPやHTTPSの"mozilla.org/"のホストのみマッチします。 |
|
|
"ftp://mozilla.org/"のみマッチします |
ftp://mozilla.org |
|
HTTPS URLでがpathが "path"のホストのみマッチます。ホストはどんなホストでも良いです。 |
|
|
Match HTTPS URLs on any host, whose path is "path/". |
|
|
Match HTTPS URLs only at "mozilla.org", with any path. |
|
|
このURLのみマッチ |
https://mozilla.org/a/b/c/ |
これ以外の全て |
Match HTTPS URLs hosted on "mozilla.org", whose path contains a component "b" somewhere in the middle. |
|
|
Match any FILE URL whose path begins with "blah". |
|
file:///bleh/ (unmatched path) |
無効なマッチパターン
無効なパターン | 理由 |
---|---|
resource://path/ |
Unsupported scheme. |
https://mozilla.org |
No path. |
https://mozilla.*.org/ |
"*" はホストの先頭に使用する必要があります。 |
https://*zilla.org/ |
"*" の後は"."を使用しなければいけません。 |
http*://mozilla.org/ |
"*" in scheme must be the only character. |
マッチパターンのテスト
WebExtensionを書いた時、普通はマッチパターンの予想通りに動きません。普通、あなたがマッチパターンの文字列をAPIに渡して、そのAPIは
When writing WebExtensions you don't generally work with match patterns directly: usually you pass a match pattern string into an API, and the API constructs a match pattern and uses it to test URLs.
しかし、もしあなたがマッチパターンが動くように試行錯誤していたり、マッチパターンのデバッグをしているなら、これはマッチパターンを作成したり直接テストする事ができる為、とても使いやすいでしょう。このセクションではどのようにそれをするのか説明します。
最初に、DeveloperToolを開き、"ブラウザとアドオンのデバッグを有効"にチェックを入れます。
次に "Browser Console"を開きます:
これはあなたがコマンドラインでFirefoxの特権モードのJavascriptを実行することを許可します。
ブラウザconsoleで動くコードはシステムの特権モードを持ち、どんな時でもコードが実行できますから、あなたはこのコードがどのように動くか正確に理解している必要があります。そして、この記事にコードサンプルが含まれています。
このコードをコマンドラインにペーストし、 enterを押して下さい。
Cu.import("resource://gre/modules/MatchPattern.jsm"); Cu.import("resource://gre/modules/BrowserUtils.jsm");
これは2つのことを行っています:
- "MatchPattern.jsm"のインポート: これはマッチパターンを実装したシステムモジュールです。特に、マッチパターンオブジェクトのコンストラクタで構成されています。
MatchPattern
オブジェクトは関数matchs()を定義していて、その関数はURI(ただしnsIRUIオブジェクト)を引数として取り、Boolを返します。 - imports "BrowserUtils.jsm": これには、
makeURI()
関数が含まれていて、文字列をnsIURI
objectに変換します。nsIURIはmatches()が受け取るオブジェクトのタイプです。
現在あなたはMatchPattern
objectsを構築し、URIを設定して, URIがマッチしているかどうかチェックすることができます。
var match = new MatchPattern("*://mozilla.org/"); var uri = BrowserUtils.makeURI("https://mozilla.org/"); match.matches(uri); // < true uri = BrowserUtils.makeURI("https://mozilla.org/path"); match.matches(uri); // < false