2013-12-09 6 views
15

Ich arbeite an einem Skript, das auf einer bestimmten Seite ausgeführt werden muss, abhängig von den Parametern, die es hat. Die URL lautet wie folgt aus:Greasemonkey/Tampermonkey @match für eine Seite mit Parametern

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

Und ich muss es passen, wenn page.php die key1=value1 unter seinen Parametern.

Jetzt bin ich mit

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

Aber es passt nicht, wenn page.php keine anderen Parameter. Es wird auch nicht übereinstimmen, wenn key1 nicht der erste Parameter ist.

Gibt es eine Möglichkeit, eine Seite nach einem Parameter abzugleichen?

Antwort

15

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

auszulösen die Abfrageparameter, Sie können entweder @include verwenden oder @match verwenden und die URL auch selbst testen.
Zu einer Zeit, der @match Ansatz schneller durchgeführt. Habe es aber schon lange nicht mehr getestet.
Mit @include können Sie eine Regex-Syntax verwenden.

Siehe auch Include and exclude rules.

In diesem Fall verwenden entweder:

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


Oder:

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

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

Das funktionierte, mit Ausnahme von ein paar Dinge. Ich habe das @ @ match-Beispiel benutzt, weil '@ include' nicht funktioniert hat (ich werde es trotzdem versuchen). Auch ich musste diese Übereinstimmung zu tun, damit es funktioniert: '@ match http: // example.com/page.php *' – noquierouser

+0

In der neuesten Version stimmt '@ match' mit dem gesamten URI einschließlich Abfragezeichenfolge überein. Beispiel: "@match https: // www.example.com" stimmt nicht mit "https: //www.example.com? Foo = bar" überein. –

+0

Mehrere Übereinstimmungsanweisungen in meinem TamperMonkey-Skript funktionieren möglicherweise für den ersten aufgeführten Standort, nicht jedoch für die anderen. Ich ging zu 'include' mit einer Regex, um sicherzustellen, dass die Trennzeichen nicht vergessen werden, und es scheint, dass ich stattdessen meine benutzerdefinierten üblichen Trennzeichen nicht verwenden kann. – Pysis

Verwandte Themen