Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

384
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda