¿Cómo obtener la URL sin ningún parámetro en JavaScript?
Si uso:
alert(window.location.href);
Obtengo todo incluyendo las cadenas de consulta. ¿Hay alguna manera de obtener solo la parte principal de la URL, por ejemplo:
http://mysite.com/somedir/somefile/
en lugar de
http://mysite.com/somedir/somefile/?foo=bar&loo=goo
Respuesta #1
Esto es posible, pero tendrás que construirlo manualmente a partir del objeto location:
location.protocol + '//' + location.host + location.pathname
Respuesta #2
Cada respuesta es bastante complicada. Aquí:
var url = window.location.href.split('?')[0];
Incluso si no hay un ?, todavía devolverá el primer argumento, que será tu URL completa, menos la cadena de consulta.
También es independiente del protocolo, lo que significa que incluso podrías usarlo para cosas como ftp, itunes, etc.
Respuesta #3
LLEGO TARDE a la fiesta, pero tuve que resolver esto recientemente, así que pensé en compartir la riqueza.
const url = window.location.origin + window.location.pathname
//http://example.com/somedir/somefile/
window.location.origin te dará la URL base, en nuestro caso de prueba: http://example.com
window.location.pathname te dará la ruta del path (después de la URL base), en nuestro caso de prueba /somedir/somefile
SOLUCIÓN 2
Simplemente puedes hacer lo siguiente para deshacerte de los parámetros de consulta.
const url = window.location.href.split('?')[0]Respuesta #4
Usa indexOf
var url = "http://mysite.com/somedir/somefile/?aa";
if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}
Respuesta #5
Usa el constructor URL(), luego extrae y concatena el origen y la ruta. Esto eliminará automáticamente los parámetros de búsqueda (también llamados de consulta) de la URL, dejando solo el esquema, dominio, puerto y ruta.
const url = new URL('http://example.com/somedir/?foo=bar');
console.log(url.origin + url.pathname);Como nota, este tipo de transformación generalmente se denomina normalización, específicamente en este caso Normalización de URI. Es posible que ya existan bibliotecas que logren esto de manera más robusta con más opciones en su entorno.
Respuesta #6
Puedes concatenar origin y pathname, si hay un puerto presente como example.com:80, eso también se incluirá.
location.origin + location.pathname
Respuesta #7
Solo una alternativa más usando URL
var theUrl = new URL(window.location.href);
theUrl.search = ""; //Remove any params
theUrl //as URL object
theUrl.href //as a string
