Greasemonkey/Tampermonkey @match用于包含参数的页面

noq*_*ser 28 javascript regex greasemonkey tampermonkey

我正在编写一个必须在某个页面中执行的脚本,具体取决于它具有的参数.URL如下所示:

http://example.com/page.php?key1=value1&key2=value2&...
Run Code Online (Sandbox Code Playgroud)

我需要的时候与之相匹配的page.phpkey1=value1它的参数之一.

现在我正在使用

@match http://example.com/page.php?key1=value1&*
Run Code Online (Sandbox Code Playgroud)

但如果page.php没有其他参数则不匹配.如果key1不是第一个参数,它也将不匹配.

有没有办法根据参数匹配页面?

Bro*_*ams 36

@match 仅适用于URL的协议/方案,主机和路径名.

要触发查询参数,您可以使用@include或使用@match并自行测试URL.
有一段时间,这种@match方法表现得更快.但是有一段时间没有测试过.
使用@include,您可以使用正则表达式语法.

请参阅包含和排除规则.

在这种情况下,使用:

...
// @include  /^https?://example\.com/page\.php*key1=value1*/
// ==/UserScript==
Run Code Online (Sandbox Code Playgroud)


要么:

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

if (/\bkey1=value1\b/.test (location.search) ) {
    // DO YOUR STUFF HERE.
}
Run Code Online (Sandbox Code Playgroud)

  • 第二个例子(使用“@match”)对我有用!如果将“*”放在任何查询字符串之前,则只需将“*”附加到 URL 路径即可。 (2认同)

Rob*_* M. 9

根据 的文档@match,Greasemonkey 引擎似乎不会匹配查询字符串参数:

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

  • 我相信现在的 URL 是 https://developer.chrome.com/docs/extensions/mv3/match_patterns/ (3认同)