Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

389
Visualizações
Eliminación de parámetros de URL con Javascript: mi solución funciona, excepto en algunos casos marginales y no estoy seguro de cómo solucionarlo.

En pocas palabras, tengo algo de Javascript que uso para eliminar parámetros de la URL. Parece que:

 //Define variable var objQueryString={}; //Get querystring value function getParameterByName(name) { name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); } //Function used to remove querystring function removeQString(key) { // ignore this bit, I was just playing around with looping multiple times for(i=0; i<5; i++) { var urlValue=document.location.href; //Get query string value var searchUrl=location.search; if(key!="") { oldValue = getParameterByName(key); removeVal=key+"="+oldValue; if(searchUrl.indexOf('?'+removeVal+'&')!= "-1") { urlValue=urlValue.replace('?'+removeVal+'&','?'); } else if(searchUrl.indexOf('&'+removeVal+'&')!= "-1") { urlValue=urlValue.replace('&'+removeVal+'&','&'); } else if(searchUrl.indexOf('?'+removeVal)!= "-1") { urlValue=urlValue.replace('?'+removeVal,''); } else if(searchUrl.indexOf('&'+removeVal)!= "-1") { urlValue=urlValue.replace('&'+removeVal,''); } } else { var searchUrl=location.search; urlValue=urlValue.replace(searchUrl,''); } history.pushState({state:1, rand: Math.random()}, '', urlValue); } location.reload(); }

Puedo activarlo usando algo como:

 <a href="#" onClick="removeQString('budget')">

Esto funciona absolutamente bien, excepto cuando un parámetro de URL lleva cierta codificación. Por ejemplo, una variable de fecha/hora podría verse así:

 ?expdate=2022-02-13T11%3A25

En el caso anterior, el script no puede identificar ni eliminar y no estoy seguro de cómo solucionarlo. ¿Alguien puede señalarme en la dirección correcta?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Como alguien sugirió, me he alejado de esta solución bastante torpe para simplemente usar URLSearchParams. Había evitado esto por la compatibilidad con IE, pero es demasiado doloroso retenerlo.

Usando lo siguiente ahora en su lugar:

 function removeParam(key) { let url = new URL(window.location.href); let params = new URLSearchParams(url.search); params.delete(key); newURL = location.protocol + '//' + location.host + location.pathname + '?' + params; window.location.replace(newURL); }
about 4 years ago · Juan Pablo Isaza Relatório

0

Todo tu enfoque me parece un poco complicado. ¿Por qué no simplemente dividir la cadena de búsqueda por & y luego filtrar el valor que comienza con la clave específica?

 function removeKey(key, querystring) { if (querystring.length <= 1) return ""; //or whatever to do if no parameters are present querystring = querystring.substring(1); //remove the initial '?' var queryarray = querystring.split("&"); //split into parameters if (key) { queryarray = queryarray.filter(function(x) { //remove all elements which start with "key=" return x.indexOf(key+"=") != 0; }); } else { //do whatever necessary if no key is given } //join the query back together (or return an empty string if no parameters left return queryarray.length ? "?" + queryarray.join("&") : ""; } console.log("1", removeKey("q1", "?q1=abc&q2=xyz&q3=123&q4=blubb%234%xyz")) console.log("2", removeKey("q1", "?q1=abc")) console.log("3", removeKey("q1", "?")) console.log("4", removeKey("q1", ""))

about 4 years ago · Juan Pablo Isaza Relatório

0

Haces un trabajo innecesario aquí. Ya está capturando algunos datos con expresiones regulares, solo termine el trabajo con eso. Todavía es ingenuo y fallará en los datos codificados deliberadamente para evitarlo, pero por lo demás funciona con las mismas limitaciones que su analizador de claves inicial; de hecho, acabo de copiar y pegar la mayor parte del código de usted.

 function removeQString(query, key) { key = key.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("([?&])" + key + "=([^&#]*)") return query.replace(regex, '').replace(/^&/, '?') } console.log(removeQString('?expdate=2022-02-13T11%3A25&whatever=123', 'expdate')) // ?whatever=123 console.log(removeQString('?q=url+query+examples&oq=url+query+examples&sourceid=chrome&ie=UTF-8', 'q')) // ?oq=url+query+examples&sourceid=chrome&ie=UTF-8 console.log(removeQString('?q=url+query+examples&oq=url+query+examples&sourceid=chrome&ie=UTF-8', 'oq')) // ?q=url+query+examples&sourceid=chrome&ie=UTF-8 console.log(removeQString('?q=url+query+examples&oq=url+query+examples&sourceid=chrome&ie=UTF-8', 'ie')) // ?q=url+query+examples&oq=url+query+examples&sourceid=chrome
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda