2013-12-09 5 views
15

私は、あるページで実行する必要があるスクリプトに取り組んでいます。 URLは次のようである:Greasemonkey/Tampermonkey @matchパラメータを持つページの

http://example.com/page.php?key1=value1&key2=value2&... 

そしてpage.phpは、そのパラメータの中key1=value1を持っているとき、私はそれを一致させる必要があります。

今私は

@match http://example.com/page.php?key1=value1&* 

を使用しています。しかしpage.phpは、他のパラメータを持っていない場合には一致しません。 key1が最初のパラメータでもない場合にも一致しません。

パラメータに応じてページを一致させる手段はありますか?

答えて

15

@match only works on the protocol/scheme, host, and pathname of a URL.

@includeを使用するか、@matchを使用してURLをテストすることもできます。
一度に、@matchアプローチがより速く実行されました。しかし、しばらくそれをテストしていない。
@includeでは、正規表現の構文を使用できます。

また、Include and exclude rulesを参照してください。この場合

、のいずれかを使用:

... 
// @include /^http://example\.com/page\.php*key1=value1*/ 
// ==/UserScript== 


または:

... 
// @match http://example.com/page.php* 
// ==/UserScript== 

if (/\bkey1=value1\b/.test (location.search)) { 
    // DO YOUR STUFF HERE. 
} 
+1

これはカップルの事を除いて、働いていました。私は '@ match'の例を使用しました。なぜなら、' @include'が動作しなかったからです(私は試していきます)。 また、私はそれを動作させるためにこのマッチを行わなければなりません: '@match http:// example.com/page.php *' – noquierouser

+0

最新バージョンでは、 '@ match'はクエリ文字列を含むURI全体と一致します。たとえば、 '@match https:// www.example.com'は' https://www.example.com?foo = bar'と一致しません。 –

+0

TamperMonkeyスクリプト内の複数の一致ステートメントは、リストされた最初のサイトでは動作しますが、他のサイトでは動作しません。区切り文字を忘れないように、正規表現で 'include 'を使うことに行きました。私は通常の区切り文字を使用することはできません。 – Pysis