web-dev-qa-db-fra.com

Greasemonkey / Tampermonkey @match pour une page avec paramètres

Je travaille sur un script qui doit être exécuté dans une certaine page, en fonction des paramètres dont il dispose. L'URL est comme ceci:

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

Et je dois le faire correspondre quand page.php a la key1=value1 parmi ses paramètres.

Maintenant j'utilise

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

Mais cela ne correspond pas si page.php n'a pas d'autres paramètres. Il ne correspondra pas non plus si key1 n'est pas non plus le premier paramètre.

Existe-t-il un moyen de faire correspondre une page en fonction d'un paramètre?

28
noquierouser

@match ne fonctionne que sur le protocole/schéma, l'hôte et le chemin d'accès d'une URL.

Pour déclencher les paramètres de requête, vous pouvez soit utiliser @include Ou utiliser @match et testez vous-même l'URL.
Notez que le @match l'approche fonctionne plus rapidement.

Avec @include, vous pouvez utiliser une syntaxe d'expression régulière. Voir aussi Inclure et exclure des règles .

Dans ce cas, utilisez soit:

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


Ou:

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

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

Selon la documentation de @match, il ne semble pas que les paramètres de la chaîne de requête soient quelque chose sur lequel le moteur Greasemonkey correspondra:

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

2
Rob M.