Javascript 用于将参数添加到URL的Greasemonkey脚本
我不擅长JS,所以我一直在玩弄一些我设法找到的Greasemonkey脚本,但它们的性能没有达到预期。我想要的是非常基本的: 检查域中的URL是否包含变量Javascript 用于将参数添加到URL的Greasemonkey脚本,javascript,greasemonkey,Javascript,Greasemonkey,我不擅长JS,所以我一直在玩弄一些我设法找到的Greasemonkey脚本,但它们的性能没有达到预期。我想要的是非常基本的: 检查域中的URL是否包含变量lang-或者?lang或者&lang 如果URL包含该变量,请检查其值:如果该值为en则不执行任何操作,如果该值为其他值,则将其替换为en 如果URL不包含变量lang将其添加到URL的末尾,如&lang=en 有什么想法吗?你想用的.search以字符串形式包含查询 // if the query doesn't contain lang=
lang
-或者?lang
或者&lang
如果URL包含该变量,请检查其值:如果该值为en
则不执行任何操作,如果该值为其他值,则将其替换为en
如果URL不包含变量lang
将其添加到URL的末尾,如&lang=en
有什么想法吗?你想用的.search
以字符串形式包含查询
// if the query doesn't contain lang=en
if (!window.location.search.match(/[?&]lang=en(&|$)/)) {
// either replace an existing lang=... param or append it
window.location.search = window.location.search.
replace(/[?&]lang=[^&]*|$/, '&lang=en');
}
可能重复:此选项有效,但如果URL为domain.com/?lang=xx,则会将其替换为domain.com/?&lang=xx-即添加到?&中?。谢谢你抽出时间来帮助我!
try {
var url = document.location.toString();
var updateUrl = updateQueryStringParameter(url, 'lang', 'en');
console.log(updateUrl);
console.log(url != updateUrl);
if (url != updateUrl) {
document.location = updateUrl;
}
} catch (e) {}
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
} else {
return uri + separator + key + "=" + value;
}
}