I'm working on a script that must be executed in a certain page, depending on the parameters it has. The URL is like this:
http://example.com/page.php?key1=value1&key2=value2&...
And I need to match it when page.php
has the key1=value1
among its parameters.
Now I'm using
@match http://example.com/page.php?key1=value1&*
But it doesn't match if page.php
has no other parameters. It also won't match if key1
is not the first parameter either.
Is there any way to match a page according to a parameter?
@match
only works on the protocol/scheme, host, and pathname of a URL.
To trigger off the query parameters, you can either use @include
or use @match
and also test the URL yourself.
Note that the @match
approach performs faster.
With @include
, you can use a regex syntax. See, also Include and exclude rules.
In this case, use either:
...
// @include /^https?://example\.com/page\.php*key1=value1*/
// ==/UserScript==
Or:
...
// @match *://example.com/page.php*
// ==/UserScript==
if (/\bkey1=value1\b/.test (location.search) ) {
// DO YOUR STUFF HERE.
}