如何@match用户脚本中的URL哈希?

时间:2018-09-21 15:16:35

标签: url match greasemonkey userscripts tampermonkey

我在网站上有很多打开的标签-我想将其限制为仅一个URL。

问题在于URL中包含#,而我似乎无法@match。

URL看起来像:https://xxx.xxxxxx.xxx/#/xxxxxx

我尝试过:

// @match https://xxx.xxxxxx.xxx/#/xxxxxx - doesnt work

// @match https://xxx.xxxxxx.xxx/* - works - but works on all tabs

// @match https://xxx.xxxxxx.xxx/*/xxxxxx -doesnt work;/

// @match https://xxx.xxxxxx.xxx/\#/xxxxxx -doesnt work;/

*和它后面的任何内容的任何组合均不起作用。 :(

1 个答案:

答案 0 :(得分:2)

该问题与Greasemonkey/Tampermonkey @match for a page with parameters密切相关。

CString CDataset::GetFieldAsString(char * FieldName) { if(this->IsNull(FieldName)) return ""; else return this->pRs->Fields->Item[FieldName]->Value.bstrVal; } only works on the protocol/scheme, host, and pathname of a URL.

要触发散列值(正式为called the "fragment"),可以使用@match note-1 或使用{{1} },然后自己测试网址。

因此,使用如下代码:

@include

对于此示例,该代码:

  • 运行次数:@match
  • 运行次数:... // @match *://YOUR_SERVER.COM/YOUR_PATH/ // ==/UserScript== if ( ! /#unicorn.*/.test(location.hash) ) return; // REST OF YOUR CODE HERE.
  • 忽略:https://YOUR_SERVER.COM/YOUR_PATH/#unicorn
  • 忽略:https://YOUR_SERVER.COM/YOUR_PATH/#unicorn-mode(如果需要,请在https://YOUR_SERVER.COM/YOUR_PATH/#unicom的末尾添加https://YOUR_SERVER.COM/YOUR_PATH/?foo=bar#unicorn。)

重要提示:仅适用于初始页面加载。 *可以在页面加载后更改,并且处理起来更加复杂,因此未在此问题中进行说明。
因此,对于这种情况,请打开一个新问题并参考该问题。




注意:

  1. 不幸的是,Tampermonkey尚未像Greasemonkey那样实现@match,因此即使在hashseems likely to remain that way for the near future中,碎片/哈希也被忽略了。