Búsqueda de sitios web

¿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

Artículos relacionados