Javascript Userscript永远运行(持续重新加载页面,而不是重定向一次)
使用Tampermonkey在Chrome中执行用户脚本时遇到问题 脚本的思想是将字符串Javascript Userscript永远运行(持续重新加载页面,而不是重定向一次),javascript,userscripts,tampermonkey,Javascript,Userscripts,Tampermonkey,使用Tampermonkey在Chrome中执行用户脚本时遇到问题 脚本的思想是将字符串&f=%20license:“Creative+Commons+0”附加到urlfreesound.org/search,以防在那里找不到它 问题是,当userscript应该添加字符串一次时,它却不断地添加字符串 代码如下: /==UserScript== //@name Freesound CC0 //@匹配https://freesound.org/search* //==/UserScript== (
&f=%20license:“Creative+Commons+0”
附加到urlfreesound.org/search
,以防在那里找不到它
问题是,当userscript应该添加字符串一次时,它却不断地添加字符串
代码如下:
/==UserScript==
//@name Freesound CC0
//@匹配https://freesound.org/search*
//==/UserScript==
(功能(){
"严格使用",;
如果(!window.location.href.match(/f=%20license:“Creative+Commons+0”/)){
window.location.href+='&f=%20许可证:“Creative+Commons+0”;
}
})();
尝试使用此正则表达式
f=%20license:"Creative\+Commons\+0"
请注意加号前面的反斜杠,请尝试使用此正则表达式
f=%20license:"Creative\+Commons\+0"
请注意加号前面的反斜杠有两个(或三个)问题:
- 添加到URL的字符串中的字符
被编码为“
,正则表达式在下一次迭代中将不匹配该字符%22
- 您需要在正则表达式中转义
+
- URL中的大写字符可能会被服务器更改为小写;您可能需要使正则表达式不区分大小写(使用
标志)i
(function() {
'use strict';
if (!window.location.href.match(/f=%20license:%22Creative\+Commons\+0%22/i)) {
window.location.href += '&f=%20license:%22Creative+Commons+0%22';
}
})();
两个(或可能三个)问题:
- 添加到URL的字符串中的字符
被编码为“
,正则表达式在下一次迭代中将不匹配该字符%22
- 您需要在正则表达式中转义
+
- URL中的大写字符可能会被服务器更改为小写;您可能需要使regex不区分大小写(使用
标志)i
(function() {
'use strict';
if (!window.location.href.match(/f=%20license:%22Creative\+Commons\+0%22/i)) {
window.location.href += '&f=%20license:%22Creative+Commons+0%22';
}
})();
另外一个问题是,一些服务器仍然会使用小写URL,因此
Creative+Commons
会变成Creative+Commons
。如果这是OP的情况,那么regex中需要i
标志。啊,这一点很好!另外一个问题是,一些服务器仍然会使用小写URL,因此Creative+Commons
会变成Creative+Commons
。如果这是OP的情况,那么regex中需要i
标志。啊,这一点很好!在回答中添加了这一点,我确信这个答案的URL编码部分也存在重复。我相信这个答案的URL编码部分也有重复。稍后,我会尽量记得找到它。