Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

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.

https://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.

https://mozilla.org/

https://mozilla.org/

https://a.mozilla.org/

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

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

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

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

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

*://mozilla.org/

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

https://mozilla.org/

https://mozilla.org/

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

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

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

ftp://mozilla.org/

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

ftp://mozilla.org

https://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

https://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/

https://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

https://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.

マッチパターンのテスト

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

 

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

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