Greasemonkey/Tampermonkey @match для страницы с параметрами

Я работаю над скриптом, который должен быть выполнен на определенной странице, в зависимости от параметров, которые он имеет. URL-адрес выглядит так:

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

И мне нужно сопоставить его, когда page.php имеет page.php key1=value1 среди его параметров.

Теперь я использую

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

Но это не соответствует, если у параметра page.php нет других параметров. Он также не будет соответствовать, если key1 не является первым параметром.

Есть ли способ сопоставить страницу в соответствии с параметром?

Ответ 1

@match работает только для протокола/схемы, хоста и пути URL.

Чтобы инициировать параметры запроса, вы можете использовать @include или @match а также самостоятельно проверить URL.
Обратите внимание, что подход @match работает быстрее.

С @include вы можете использовать синтаксис регулярных выражений. См. Также Включение и исключение правил.

В этом случае используйте либо:

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


Или же:

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

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

Ответ 3

Я хотел бы, чтобы мой код исключал ссылки с такой длиной https://vk.com/ и использовал только другие, например https://www.google.com/