Jak mogę usunąć parametr ciągu zapytania w JavaScript?


127

Czy istnieje lepszy sposób na usunięcie parametru z ciągu zapytania w ciągu adresu URL w standardowym języku JavaScript inny niż użycie wyrażenia regularnego?

Oto, co do tej pory wymyśliłem, co wydaje się działać w moich testach, ale nie lubię wymyślać na nowo analizowania zapytań!

function RemoveParameterFromUrl( url, parameter ) {

    if( typeof parameter == "undefined" || parameter == null || parameter == "" ) throw new Error( "parameter is required" );

    url = url.replace( new RegExp( "\\b" + parameter + "=[^&;]+[&;]?", "gi" ), "" ); "$1" );

    // remove any leftover crud
    url = url.replace( /[&;]$/, "" );

    return url;
}

Odpowiedzi:


178
"[&;]?" + parameter + "=[^&;]+"

Wydaje się niebezpieczne, ponieważ parametr „bar” pasuje do:

?a=b&foobar=c

Ponadto zakończy się niepowodzeniem, jeśli parameterzawiera jakiekolwiek znaki specjalne w wyrażeniu regularnym, takie jak „.”. Nie jest to globalne wyrażenie regularne, więc usunie tylko jedno wystąpienie parametru.

Nie użyłbym do tego prostego RegExp, przeanalizowałbym parametry i stracił te, których nie chcesz.

function removeURLParameter(url, parameter) {
    //prefer to use l.search if you have a location/link object
    var urlparts = url.split('?');   
    if (urlparts.length >= 2) {

        var prefix = encodeURIComponent(parameter) + '=';
        var pars = urlparts[1].split(/[&;]/g);

        //reverse iteration as may be destructive
        for (var i = pars.length; i-- > 0;) {    
            //idiom for string.startsWith
            if (pars[i].lastIndexOf(prefix, 0) !== -1) {  
                pars.splice(i, 1);
            }
        }

        return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : '');
    }
    return url;
}

Dobra uwaga na temat paska pasującego do foobara. Zaktualizowałem pierwotne wyrażenie regularne, aby wymagało znaku? lub [&;] na początku. Czytam również twoje rozwiązanie, aby je rozważyć ...
Matthew Lock

5
Jeśli chcesz pozbyć się znaku „?” jeśli po usunięciu nie ma żadnych parametrów, dodaj warunek if, aby sprawdzić, czy pars.length == 0, a jeśli jest równy 0, wprowadź „url = urlparts [0]” zamiast dołączania znaku „?”.
johnmcaliley

2
Czy można bezpiecznie porównać fragment adresu URL z encodeURIComponent (parametr)? A jeśli adres URL inaczej koduje nazwę parametru? Na przykład „dwa% 20 słów” kontra „dwa + słowa”. Aby sobie z tym poradzić, lepiej zdekodować nazwę parametru i porównać ją z normalnym łańcuchem.
Adrian Pronk

9
Nieznaczna poprawa, tak że po usunięciu parametru końcowego adresu URL znak „?” również zostanie usunięty: Zmień linię url= urlparts[0]+'?'+pars.join('&');naurl= urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : "");
Cody S

2
@ ktutnik / @ JonasAxelsson W parametrach zapytania URL nie jest rozróżniana wielkość liter.
bobince

30

Nowoczesne przeglądarki zapewniają URLSearchParamsinterfejs do pracy z parametrami wyszukiwania. Który ma deletemetodę, która usuwa parametr według nazwy.

if (typeof URLSearchParams !== 'undefined') {
  const params = new URLSearchParams('param1=1&param2=2&param3=3')
  
  console.log(params.toString())
  
  params.delete('param2')
  
  console.log(params.toString())

} else {
  console.log(`Your browser ${navigator.appVersion} does not support URLSearchParams`)
}


2
Pamiętaj, że URLSearchParamsnie jest obsługiwane przez przeglądarkę IE, Edge 16 i iOS 10.2 Safari. (ref: caniuse.com/#feat=urlsearchparams )
khiav reoy

3
@khiavreoy Yeah. Podobnie jak pierwsze dwa słowa w odpowiedzi podają ten sam link :)
Yury Tarabanko

23

Skopiowano z odpowiedzi bobince, ale sprawiłeś, że obsługuje znaki zapytania w ciągu zapytania, np

http://www.google.com/search?q=test???+something&aq=f

Czy poprawne jest posiadanie więcej niż jednego znaku zapytania w adresie URL?

function removeUrlParameter(url, parameter) {
  var urlParts = url.split('?');

  if (urlParts.length >= 2) {
    // Get first part, and remove from array
    var urlBase = urlParts.shift();

    // Join it back up
    var queryString = urlParts.join('?');

    var prefix = encodeURIComponent(parameter) + '=';
    var parts = queryString.split(/[&;]/g);

    // Reverse iteration as may be destructive
    for (var i = parts.length; i-- > 0; ) {
      // Idiom for string.startsWith
      if (parts[i].lastIndexOf(prefix, 0) !== -1) {
        parts.splice(i, 1);
      }
    }

    url = urlBase + '?' + parts.join('&');
  }

  return url;
}

2
Uważam, że ???składnia jest nieprawidłowa i nigdy nie powinna występować w adresie URL`.

@torazaburo Spójrz na postawione przeze mnie pytanie związane z stackoverflow: „Czy można mieć więcej niż jeden znak zapytania w adresie URL?”, odpowiedź brzmi tak. Również to było lata temu, więc nie pamiętam szczegółów, ale napotkałem problemy, gdy nie zostało to poprawnie rozwiązane.
LukePH

Nie mówię, że nie istnieją w prawdziwym świecie i prawdopodobnie chciałoby się je obsłużyć, ale w odpowiednio utworzonym adresie URL znak zapytania to „zastrzeżony znak” i każdy inny znak zapytania niż ten wprowadzenie parametrów zapytania powinno być zakodowane w postaci adresu URL.

1
Możesz zamienić ostatnią linię na, return url.endsWith("?") ? url.slice(0,-1) : url;aby uwzględnić przypadek, w którym parametr do usunięcia jest jedynym parametrem w ciągu zapytania
Konamiman

@Konamiman To zmieniłoby dane parametrów, na przykład podczas usuwania „aq” z: google.com/search?q=test???&aq=f, ale rozumiem, co masz na myśli, byłoby miło wyczyścić adres URL, nawet jeśli ? nie szkodzi. Logika musi tylko upewnić się, że ostatnia? jest również pierwszym?
LukePH

21

Nie widzę poważnych problemów z rozwiązaniem regex. Ale nie zapomnij o zachowaniu identyfikatora fragmentu (tekst po #).

Oto moje rozwiązanie:

function RemoveParameterFromUrl(url, parameter) {
  return url
    .replace(new RegExp('[?&]' + parameter + '=[^&#]*(#.*)?$'), '$1')
    .replace(new RegExp('([?&])' + parameter + '=[^&]*&'), '$1');
}

I do rzeczy bobince'a, tak - .w nazwach parametrów musiałbyś uciekać przed znakami.


1
Oto ulepszone wyrażenie regularne, które działa, gdy parametr nie ma wartości (np. „Ex.com?removeMe”) i nie zastępuje parametru we fragmentach (np. „Ex.com?#&dont=removeMe”) ani ścieżkach (tj. „ ex.com/&dont=removeMe '):url.replace(new RegExp('^([^#]*\?)(([^#]*)&)?' + parameter + '(\=[^&#]*)?(&|#|$)' ), '$1$3$5').replace(/^([^#]*)((\?)&|\?(#|$))/,'$1$3$4')
Stephen M. Harris

To nie zadziała, Stephen M. Harris. Spróbuj podać swojemu kodowi pusty ciąg jako parametr i zobacz, co się stanie ...
David Fischer

15

Możesz zmienić adres URL za pomocą:

window.history.pushState({}, document.title, window.location.pathname);

w ten sposób możesz nadpisać adres URL bez parametru wyszukiwania, używam go do czyszczenia adresu URL po pobraniu parametrów GET.


13

Każdy zainteresowany rozwiązaniem regex utworzyłem tę funkcję, aby dodać / usunąć / zaktualizować parametr querystring. Niepodanie wartości spowoduje usunięcie parametru, podanie jednej spowoduje dodanie / zaktualizowanie parametru. Jeśli adres URL nie zostanie podany, zostanie pobrany z window.location. To rozwiązanie uwzględnia również zakotwiczenie adresu URL.

function UpdateQueryString(key, value, url) {
    if (!url) url = window.location.href;
    var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"),
        hash;

    if (re.test(url)) {
        if (typeof value !== 'undefined' && value !== null)
            return url.replace(re, '$1' + key + "=" + value + '$2$3');
        else {
            hash = url.split('#');
            url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
            if (typeof hash[1] !== 'undefined' && hash[1] !== null) 
                url += '#' + hash[1];
            return url;
        }
    }
    else {
        if (typeof value !== 'undefined' && value !== null) {
            var separator = url.indexOf('?') !== -1 ? '&' : '?';
            hash = url.split('#');
            url = hash[0] + separator + key + '=' + value;
            if (typeof hash[1] !== 'undefined' && hash[1] !== null) 
                url += '#' + hash[1];
            return url;
        }
        else
            return url;
    }
}

AKTUALIZACJA

Wystąpił błąd podczas usuwania pierwszego parametru z kwerendy, przerobiłem wyrażenie regularne i przetestowałem, aby uwzględnić poprawkę.

AKTUALIZACJA 2

Aktualizacja @schellmax w celu naprawienia sytuacji, w której symbol hashtagu jest tracony podczas usuwania zmiennej zapytania bezpośrednio przed hashtagiem


1
To nie działa, jeśli masz dwa ciągi zapytań i usuniesz pierwszy. Przekazany adres URL staje się nieprawidłowy, ponieważ? jest usuwany, gdy powinien zostać zakonserwowany.
Blake Niemyjski

1
@BlakeNiemyjski dziękuję za znalezienie tego błędu, zaktualizowałem skrypt, aby uwzględnić obejście pierwszego parametru
ellemayo

1
przypadkowo usunie hash tutaj:UpdateQueryString('a', null, 'http://www.test.com?a=b#c');
schellmax

Fajna funkcja, dzięki. Do Twojej wiadomości: podczas używania tego z ignorowaniem kluczy tablicy w każdej pętli () `, może być konieczne zdefiniowanie zmniejszania się urldla każdej iteracji zastępowania. Ale to oznacza, że ​​musisz wpisać a valuew argumentach, co spowoduje, że querystring zostanie w połowie usunięty. Aby temu przeciwdziałać, użycie undefinedlub nulldo valueargumentu typu:url_from_last_iteration = UpdateQueryString(current_ignore_key, undefined/null, url_from_last_iteration);
dhaupin

7

Zakładając, że chcesz usunąć parametr key = val z identyfikatora URI:

function removeParam(uri) {
   return uri.replace(/([&\?]key=val*$|key=val&|[?&]key=val(?=#))/, '');
}

Działa dobrze, ale unikanie pierwszego znaku zapytania w wyrażeniu regularnym jest niepotrzebne i może powodować błąd lintera: /([&?]key=val*$|key=val&|[?&]key=val(?=#))/może być preferowane, gdy używasz liniowca, takiego jak eslint
quetzaluz


6

Oto kompletna funkcja dodawania i usuwania parametrów na podstawie tego pytania i tego githuba: https://gist.github.com/excalq/2961415

var updateQueryStringParam = function (key, value) {

    var baseUrl = [location.protocol, '//', location.host, location.pathname].join(''),
        urlQueryString = document.location.search,
        newParam = key + '=' + value,
        params = '?' + newParam;

    // If the "search" string exists, then build params from it
    if (urlQueryString) {

        updateRegex = new RegExp('([\?&])' + key + '[^&]*');
        removeRegex = new RegExp('([\?&])' + key + '=[^&;]+[&;]?');

        if( typeof value == 'undefined' || value == null || value == '' ) { // Remove param if value is empty

            params = urlQueryString.replace(removeRegex, "$1");
            params = params.replace( /[&;]$/, "" );

        } else if (urlQueryString.match(updateRegex) !== null) { // If param exists already, update it

            params = urlQueryString.replace(updateRegex, "$1" + newParam);

        } else { // Otherwise, add it to end of query string

            params = urlQueryString + '&' + newParam;

        }

    }
    window.history.replaceState({}, "", baseUrl + params);
};

Możesz dodać takie parametry:

updateQueryStringParam( 'myparam', 'true' );

I usuń to w ten sposób:

updateQueryStringParam( 'myparam', null );

W tym wątku wielu powiedziało, że regex prawdopodobnie nie jest najlepszym / stabilnym rozwiązaniem ... więc nie jestem w 100% pewien, czy to coś ma jakieś wady, ale o ile to przetestowałem, działa całkiem dobrze.


5

To jest poprawna wersja parametru zapytania usuwająca zapytanie z klasą URL dla dzisiejszych przeglądarek:

function removeUrlParameter(url, paramKey)
{
  var r = new URL(url);
  r.searchParams.delete(paramKey);
  return r.href;
}

URLSearchParams nie są obsługiwane w starszych przeglądarkach

https://caniuse.com/#feat=urlsearchparams

IE, Edge (poniżej 17) i Safari (poniżej 10.3) nie obsługują URLSearchParams w klasie URL.

Polyfills

Tylko wypełnienie URLSearchParams

https://github.com/WebReflection/url-search-params

Uzupełnij adres URL Polyfill i URLSearchParams, aby dopasować je do ostatnich specyfikacji WHATWG

https://github.com/lifaon74/url-polyfill


4

Korzystanie z jQuery:

function removeParam(key) {
    var url = document.location.href;
    var params = url.split('?');
    if (params.length == 1) return;

    url = params[0] + '?';
    params = params[1];
    params = params.split('&');

    $.each(params, function (index, value) {
        var v = value.split('=');
        if (v[0] != key) url += value + '&';
    });

    url = url.replace(/&$/, '');
    url = url.replace(/\?$/, '');

    document.location.href = url;
}

3

Powyższa wersja jako funkcja

function removeURLParam(url, param)
{
 var urlparts= url.split('?');
 if (urlparts.length>=2)
 {
  var prefix= encodeURIComponent(param)+'=';
  var pars= urlparts[1].split(/[&;]/g);
  for (var i=pars.length; i-- > 0;)
   if (pars[i].indexOf(prefix, 0)==0)
    pars.splice(i, 1);
  if (pars.length > 0)
   return urlparts[0]+'?'+pars.join('&');
  else
   return urlparts[0];
 }
 else
  return url;
}


2

Z tego, co widzę, żadne z powyższych nie obsługuje normalnych parametrów i parametrów tablicy. Oto jeden, który to robi.

function removeURLParameter(param, url) {
    url = decodeURI(url).split("?");
    path = url.length == 1 ? "" : url[1];
    path = path.replace(new RegExp("&?"+param+"\\[\\d*\\]=[\\w]+", "g"), "");
    path = path.replace(new RegExp("&?"+param+"=[\\w]+", "g"), "");
    path = path.replace(/^&/, "");
    return url[0] + (path.length
        ? "?" + path
        : "");
}

function addURLParameter(param, val, url) {
    if(typeof val === "object") {
        // recursively add in array structure
        if(val.length) {
            return addURLParameter(
                param + "[]",
                val.splice(-1, 1)[0],
                addURLParameter(param, val, url)
            )
        } else {
            return url;
        }
    } else {
        url = decodeURI(url).split("?");
        path = url.length == 1 ? "" : url[1];
        path += path.length
            ? "&"
            : "";
        path += decodeURI(param + "=" + val);
        return url[0] + "?" + path;
    }
}

Jak tego użyć:

url = location.href;
    -> http://example.com/?tags[]=single&tags[]=promo&sold=1

url = removeURLParameter("sold", url)
    -> http://example.com/?tags[]=single&tags[]=promo

url = removeURLParameter("tags", url)
    -> http://example.com/

url = addURLParameter("tags", ["single", "promo"], url)
    -> http://example.com/?tags[]=single&tags[]=promo

url = addURLParameter("sold", 1, url)
    -> http://example.com/?tags[]=single&tags[]=promo&sold=1

Oczywiście, aby zaktualizować parametr, po prostu usuń, a następnie dodaj. Możesz zrobić dla niego funkcję zastępczą.


path.replace(new RegExp("&?"+param+"=[\\w]+", "g"), "");Zmieniłbym wyrażenie regularne tak, [\\w]*aby zawierało parametry takie jak „param =” bez wartości.
Tomas Prado

2

Wszystkie odpowiedzi w tym wątku mają tę wadę, że nie zachowują zakotwiczonych / fragmentów adresów URL.

Jeśli więc Twój adres URL wygląda tak:

http://dns-entry/path?parameter=value#fragment-text

i zastępujesz „parametr”

stracisz swój fragment tekstu.

Poniżej przedstawiono adaptację poprzednich odpowiedzi (bobince przez LukePH), które rozwiązują ten problem:

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

1
Nieznaczna poprawa, tak że po usunięciu parametru końcowego adresu URL znak „?” również zostanie usunięty: Zmień linię url = urlBase+'?'+pars.join('&');naurl = urlBase + (pars.length > 0 ? '?' + pars.join('&') : "");
Cody S

co jeśli # pojawi się na pierwszym miejscu? dns-entry / path # fragment-text? parametr = wartość
ajayv

2

Oto rozwiązanie, które:

  1. używa URLSearchParams (bez trudnego do zrozumienia wyrażenia regularnego)
  2. aktualizuje adres URL w pasku wyszukiwania bez ponownego ładowania
  3. utrzymuje wszystkie inne części adresu URL (np. hash)
  4. usuwa zbędne? w ciągu zapytania, jeśli ostatni parametr został usunięty
function removeParam(paramName) {
    let searchParams = new URLSearchParams(window.location.search);
    searchParams.delete(paramName);
    if (history.replaceState) {
        let searchString = searchParams.toString().length > 0 ? '?' + searchParams.toString() : '';
        let newUrl = window.location.protocol + "//" + window.location.host + window.location.pathname +  searchString + window.location.hash;
        history.replaceState(null, '', newUrl);
    }
}

Uwaga: jak wskazano w innych odpowiedziach, URLSearchParams nie jest obsługiwany w IE , więc użyj polyfill .


2

Jeśli jest to instancja URL, użyj deletefunkcjisearchParams

let url = new URL(location.href);
url.searchParams.delete('page');

1

Inną bezpośrednią i prostszą odpowiedzią byłoby

let url = new URLSearchParams(location.search)
let key = 'some_key'

return url.has(key)
    ? location.href.replace(new RegExp(`[?&]${key}=${url.get(key)}`), '')
    : location.href

0

Zmodyfikowana wersja rozwiązania autorstwa ssh_imov

function removeParam(uri, keyValue) {
      var re = new RegExp("([&\?]"+ keyValue + "*$|" + keyValue + "&|[?&]" + keyValue + "(?=#))", "i"); 
      return uri.replace(re, '');
    }

Zadzwoń tak

removeParam("http://google.com?q=123&q1=234&q2=567", "q1=234");
// returns http://google.com?q=123&q2=567

jedna rzecz, o której należy pamiętać, wysyłając wartość parametru convert space do% 20
xeon zolt

0

Zwraca adres URL bez DOWOLNYCH parametrów GET:

var href = document.location.href;
var search = document.location.search;
var pos = href.indexOf( search );
if ( pos !== -1 ){
    href = href.slice( 0, pos );
    console.log( href );
}

0

Praktycznie napisałem następującą funkcję, aby przetworzyć parametry adresu URL i uzyskać ostateczny status jako ciąg znaków i przekierować stronę. Mam nadzieję, że to przyniesie korzyści.

function addRemoveUrlQuery(addParam = {}, removeParam = [], startQueryChar = '?'){

    let urlParams = new URLSearchParams(window.location.search);

    //Add param
    for(let i in addParam){
        if(urlParams.has(i)){ urlParams.set(i, addParam[i]); }
        else                { urlParams.append(i, addParam[i]); }
    }

    //Remove param
    for(let i of removeParam){
        if(urlParams.has(i)){
            urlParams.delete(i);
        }
    }

    if(urlParams.toString()){
        return startQueryChar + urlParams.toString();
    }

    return '';
}

Na przykład, kiedy klikam przycisk, chcę, aby wartość strony została usunięta, a wartość kategorii została dodana.

let button = document.getElementById('changeCategory');
button.addEventListener('click', function (e) {

    window.location = addRemoveUrlQuery({'category':'cars'}, ['page']);

});

Myślę, że to było bardzo przydatne!


0

Cieszę się, że przewinąłeś tutaj.

Proponuję rozwiązać to zadanie za pomocą następujących możliwych rozwiązań:

  1. Musisz obsługiwać tylko nowoczesne przeglądarki (Edge> = 17) - użyj API URLSearchParams.delete () . Jest natywny i oczywiście jest najwygodniejszym sposobem rozwiązania tego zadania.
  2. Jeśli nie ma takiej opcji, możesz chcieć napisać funkcję, która to zrobi. Taka funkcja ma
    • nie zmieniaj adresu URL, jeśli parametr nie jest obecny
    • usuń parametr adresu URL bez wartości, na przykład http://google.com/?myparm
    • usuń parametr adresu URL z wartością, na przykład http://google.com/?myparm=1
    • usuń parametr adresu URL, jeśli znajduje się w adresie URL dwukrotnie, na przykład http://google.com?qp=1&qpqp=2&qp=1
    • Nie używa forpętli i nie modyfikuje tablicy podczas jej wykonywania w pętli
    • jest bardziej funkcjonalny
    • jest bardziej czytelny niż rozwiązania regexp
    • Przed użyciem upewnij się, że Twój adres URL nie jest zakodowany

Działa w IE> 9 (wersja ES5)

function removeParamFromUrl(url, param) {  // url: string, param: string
  var urlParts = url.split('?'),
      preservedQueryParams = '';

  if (urlParts.length === 2) {
    preservedQueryParams = urlParts[1]
      .split('&')
      .filter(function(queryParam) {
        return !(queryParam === param || queryParam.indexOf(param + '=') === 0)
      })
      .join('&');
  }

  return urlParts[0] +  (preservedQueryParams && '?' + preservedQueryParams); 
}

Fantazyjna wersja ES6

function removeParamFromUrlEs6(url, param) {
  const [path, queryParams] = url.split('?');
	let preservedQueryParams = '';

  if (queryParams) {
    preservedQueryParams = queryParams
      .split('&')
      .filter(queryParam => !(queryParam === param || queryParam.startsWith(`${param}=`)))
      .join('&');
  }

  return `${path}${preservedQueryParams && `?${preservedQueryParams}`}`;  
}

Zobacz, jak to działa tutaj


0
function removeParamInAddressBar(parameter) {
    var url = document.location.href;
    var urlparts = url.split('?');

    if (urlparts.length >= 2) {
        var urlBase = urlparts.shift();
        var queryString = urlparts.join("?");

        var prefix = encodeURIComponent(parameter) + '=';
        var pars = queryString.split(/[&;]/g);
        for (var i = pars.length; i-- > 0;) {
            if (pars[i].lastIndexOf(prefix, 0) !== -1) {
                pars.splice(i, 1);
            }
        }

        if (pars.length == 0) {
            url = urlBase;
        } else {
            url = urlBase + '?' + pars.join('&');
        }

        window.history.pushState('', document.title, url); // push the new url in address bar
    }
    return url;
}

-1
const params = new URLSearchParams(location.search)
params.delete('key_to_delete')
console.log(params.toString())

To jest odpowiedź na bardzo stare pytanie, na które już została zaakceptowana odpowiedź. Proszę wyjaśnić, co ma do zaoferowania ta odpowiedź, która jest nowa / różni się od innych odpowiedzi. Ponadto odpowiedzi powinny zawierać wyjaśnienia, a nie tylko kod.
nurdyguy


-2
function removeQueryStringParameter(uri, key, value) 
{

var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");

    var separator = uri.indexOf('?') !== -1 ? "&" : "?";

    if (uri.match(re)) {

        return uri.replace(re, '');

    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.