2013-12-09 19 views
15

Sahip olduğu parametrelere bağlı olarak, belirli bir sayfada yürütülmesi gereken bir script üzerinde çalışıyorum. URL şu şekildedir:Greasemonkey/Tampermonkey Parametre içeren bir sayfa için uyumu

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

Ve page.php onun parametreleri arasında key1=value1 olduğunda eşleşmesi gerekir.

Şimdi

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

kullanıyorum Ama page.php başka parametreler varsa o uyuşmuyor. Ayrıca, key1 ilk parametresi de eşleşmez.

Bir sayfayı bir parametreye göre eşleştirmenin bir yolu var mı? ,

https://developer.chrome.com/extensions/match_patterns.html

cevap

15

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

sorgu parametrelerini kapalı tetiklemek için:

+1

Bu birkaç şey hariç, amele Bu durumda

, birini kullanabilirsiniz. '@ Match' örneğinin kullanılmadığı için '@ match' örneğini kullandım (yine de denemeye devam edeceğim). Ayrıca, bunu yapmak için bu eşleştirmeyi yapmam gerekiyordu: 'http: // example.com/page.php *' – noquierouser

+0

En son sürümde '@ match' sorgu dizgisi dahil tüm URI ile eşleşiyor. Örneğin, 'https://www.example.com' https: //www.example.com? Foo = bar' ile eşleşmez. –

+0

TamperMonkey komut dosyasındaki birden fazla eşleşme ifadesi, listelenen ilk site için çalışabilir, ancak diğerleri tarafından kullanılamaz. Ben sınırlayıcıları unutmadan emin olmak için bir regex ile 'include' kullanmaya gittim ve bunun yerine benim sıradan sınırlayıcıları kullanamıyorum. – Pysis

0

@match belgelerine göre, bu sorgu dizesi parametreleri Greasemonkey motor üzerinde maç olacak bir şey vardır görünmüyor @include'u kullanabilir veya @match'u kullanabilir ve ayrıca URL'yi kendiniz test edebilirsiniz.
Bir defada @match yaklaşımı daha hızlı gerçekleştirildi. Bir süredir test etmedim.
@include ile normal ifade sözdizimini kullanabilirsiniz.

Ayrıca bkz. Include and exclude rules.

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


Veya:

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

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