2013-12-09 293 views
15

我正在處理一個腳本,它必須在某個頁面中執行,具體取決於它的參數。網址是這樣的:Greasemonkey/Tampermonkey @match頁面參數

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

,我需要與之相匹配的時候page.php有它的參數之間的key1=value1

現在我使用

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

但它不匹配,如果page.php沒有其他參數。如果key1也不是第一個參數,它也不匹配。

有什麼辦法根據參數匹配頁面嗎?

回答

15

@match only works on the protocol/scheme, host, and pathname of a URL.

要觸發關閉查詢參數,您可以使用@include或使用@match並自己測試URL。
有一次,@match方法執行得更快。雖然沒有在一段時間內測試過。
使用@include,您可以使用正則表達式語法。

另請參閱Include and exclude rules

在這種情況下,使用:

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


或者:

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

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

這個工作,除了一對夫婦的事情。我使用'@ match'示例,因爲'@ include'不起作用(儘管如此,我仍會繼續嘗試)。 另外,我不得不這樣做匹配,使其工作:'@match HTTP:// example.com/page.php文件*' – noquierouser

+0

在最新的版本,'@ match'不符合整個URI,包括查詢字符串。例如,「@match https:// www.example.com」與「https://www.example.com?foo = bar」不匹配。在我TamperMonkey腳本 –

+0

多個匹配語句可能適用於列出的第一個網站,而不是其他。我去使用'include'用正則表達式,確保不要忘記分隔符,看來我不能用我的自定義常用的分隔符來代替。 – Pysis