Greasemonkey/Tampermonkey @match for a page with parameters

本小妞迷上赌 提交于 2019-12-18 12:07:50

问题


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?


回答1:


@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.
}



回答2:


According to the documentation for @match, it doesn't appear that query string parameters are something the Greasemonkey engine will match on:

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



来源:https://stackoverflow.com/questions/20462544/greasemonkey-tampermonkey-match-for-a-page-with-parameters

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!