Greasemonkey脚本,用于向URL添加参数

时间:2014-03-23 15:55:27

标签: javascript greasemonkey

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

检查域中的网址是否包含变量lang - ?lang&lang

如果网址包含该变量,请检查其值:如果值为en则不执行任何操作,但如果该值为其他值,请将其替换为en

如果网址不包含变量lang,请将其添加到网址末尾,如&lang=en

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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;
    }
}

答案 1 :(得分:0)

您想使用window.location.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');
}