MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Match patterns

この翻訳は不完全です。英語から この記事を翻訳 してください。

 

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 マッチする例 マッチしない例

<all_urls>

Match all URLs.

http://example.org/

ftp://files.somewhere.org/

https://a.org/some/path/

resource://a/b/c/
(unsupported scheme)

*://*.mozilla.org/*

Match all HTTP and HTTPS URLs that are hosted at "mozilla.org" or one of its subdomains.

http://mozilla.org/

https://mozilla.org/

http://a.mozilla.org/

http://a.b.mozilla.org/

https://b.mozilla.org/path/

ftp://mozilla.org/
(unmatched scheme)

http://mozilla.com/
(unmatched host)

http://firefox.org/
(unmatched host)

*://mozilla.org/

HTTPやHTTPSの"mozilla.org/"のホストのみマッチします。

http://mozilla.org/

https://mozilla.org/

ftp://mozilla.org/
(unmatched scheme)

http://a.mozilla.org/
(unmatched host)

http://mozilla.org/a
(unmatched path)

ftp://mozilla.org/

"ftp://mozilla.org/"のみマッチします

ftp://mozilla.org

http://mozilla.org/
(unmatched scheme)

ftp://sub.mozilla.org/
(unmatched host)

ftp://mozilla.org/path
(unmatched path)

https://*/path

 HTTPS URLでがpathが "path"のホストのみマッチます。ホストはどんなホストでも良いです。

https://mozilla.org/path

https://a.mozilla.org/path

https://something.com/path

http://mozilla.org/path
(unmatched scheme)

https://mozilla.org/path/
(unmatched path)

https://mozilla.org/a
(unmatched path)

https://mozilla.org/
(unmatched path)

https://*/path/

Match HTTPS URLs on any host, whose path is "path/".

https://mozilla.org/path/

https://a.mozilla.org/path/

https://something.com/path/

http://mozilla.org/path/
(unmatched scheme)

https://mozilla.org/path
(unmatched path)

https://mozilla.org/a
(unmatched path)

https://mozilla.org/
(unmatched path)

https://mozilla.org/*

Match HTTPS URLs only at "mozilla.org", with any path.

https://mozilla.org/

https://mozilla.org/path

https://mozilla.org/another

https://mozilla.org/path/to/doc

http://mozilla.org/path
(unmatched scheme)

https://mozilla.com/path
(unmatched host)

https://mozilla.org/a/b/c/

このURLのみマッチ

https://mozilla.org/a/b/c/ これ以外の全て

https://mozilla.org/*/b/*/

Match HTTPS URLs hosted on "mozilla.org", whose path contains a component "b" somewhere in the middle.

https://mozilla.org/a/b/c/

https://mozilla.org/d/b/f/

https://mozilla.org/a/b/c/d/

https://mozilla.org/b/*/
(unmatched path)

https://mozilla.org/a/b/
(unmatched path)

file:///blah/*

Match any FILE URL whose path begins with "blah".

file:///blah/

file://blah/bleh

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.

マッチパターンのテスト

WebExtensionsを書くときには、一般に一致パターンを直接操作することはありません。通常、一致パターン文字列をAPIに渡し、APIは一致パターンを作成し、URLをテストするために使用します。しかし、もしあなたがマッチパターンが動くように試行錯誤していたり、マッチパターンのデバッグをしているなら、これはマッチパターンを作成したり直接テストする事ができる為、とても使いやすいでしょう。このセクションではどのようにそれをするのか説明します。

最初に、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

 

ドキュメントのタグと貢献者

 このページの貢献者: dlwe, lv7777
 最終更新者: dlwe,