Все ответы в этой теме имеют недостаток в том, что они не сохраняют части ссылок / фрагменты URL.
Так что, если ваш URL выглядит так:
http://dns-entry/path?parameter=value#fragment-text
и вы заменяете 'параметр'
вы потеряете свой фрагмент текста.
Ниже приводится адаптация предыдущих ответов (bobince через LukePH), которая решает эту проблему:
function removeParameter(url, parameter)
{
var fragment = url.split('#');
var urlparts= fragment[0].split('?');
if (urlparts.length>=2)
{
var urlBase=urlparts.shift(); //get first part, and remove from array
var queryString=urlparts.join("?"); //join it back up
var prefix = encodeURIComponent(parameter)+'=';
var pars = queryString.split(/[&;]/g);
for (var i= pars.length; i-->0;) { //reverse iteration as may be destructive
if (pars[i].lastIndexOf(prefix, 0)!==-1) { //idiom for string.startsWith
pars.splice(i, 1);
}
}
url = urlBase + (pars.length > 0 ? '?' + pars.join('&') : '');
if (fragment[1]) {
url += "#" + fragment[1];
}
}
return url;
}