Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于将参数添加到URL的Greasemonkey脚本_Javascript_Greasemonkey - Fatal编程技术网

Javascript 用于将参数添加到URL的Greasemonkey脚本

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=

我不擅长JS,所以我一直在玩弄一些我设法找到的Greasemonkey脚本,但它们的性能没有达到预期。我想要的是非常基本的:

检查域中的URL是否包含变量
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;
    }
}