Большинство ответов здесь предполагают, что нужно добавить параметр (и) к URL, что-то вроде следующего фрагмента или аналогичного варианта:
location.href = location.href + "¶meter=" + value;
Это будет работать довольно хорошо для большинства случаев.
Однако
На мой взгляд, это неправильный способ добавления параметра в URL.
Поскольку предлагаемый подход не проверяет, задан ли параметр в URL, если не соблюдать осторожность, можно получить очень длинный URL с одним и тем же параметром, повторенным несколько раз. а именно:
https://stackoverflow.com/?¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1
На этом этапе начинаются проблемы. Предложенный подход может и будет создавать очень длинный URL после многократного обновления страницы, что делает его недействительным. Перейдите по этой ссылке для получения дополнительной информации о длинном URL-адресе Какая максимальная длина URL-адреса в разных браузерах?
Это мой предложенный подход:
function URL_add_parameter(url, param, value){
var hash = {};
var parser = document.createElement('a');
parser.href = url;
var parameters = parser.search.split(/\?|&/);
for(var i=0; i < parameters.length; i++) {
if(!parameters[i])
continue;
var ary = parameters[i].split('=');
hash[ary[0]] = ary[1];
}
hash[param] = value;
var list = [];
Object.keys(hash).forEach(function (key) {
list.push(key + '=' + hash[key]);
});
parser.search = '?' + list.join('&');
return parser.href;
}
С помощью этой функции нужно будет просто сделать следующее:
location.href = URL_add_parameter(location.href, 'param', 'value');