¿Cómo obtener la URL sin ningún parámetro en JavaScript?


176

Si yo uso:

alert(window.location.href);

Me sale todo, incluidas las cadenas de consulta. ¿Hay alguna manera de obtener la parte principal de la URL, por ejemplo:

http://mysite.com/somedir/somefile/

en vez de

http://mysite.com/somedir/somefile/?foo=bar&loo=goo

Respuestas:


283

Esto es posible, pero tendrá que construirlo manualmente desde el locationobjeto :

location.protocol + '//' + location.host + location.pathname

14
Tenga en cuenta que no necesita proporcionar el location.protocol ya que todos los navegadores modernos (incluido IE6) heredarán automáticamente el protocolo actual. es decir:'//' + location.host + location.pathname
JonnyReeves

10
@ JonnyReeves Si lo está utilizando en el documento actual, es cierto: buen punto. Hay ocasiones en las que podría ser necesario, por ejemplo, si genera la URL como texto sin formato.
solitario

1
@lonesomeday su respuesta implica que es la única forma, que no lo es.
Oddman

55
Falta el puerto, por lo que esto devolverá un resultado incorrecto para la páginahttp://www.example.com:8080/asdf.html?foo=bar
izogfif

3
Puede guardar algunos caracteres con location.origin, lo que creo que también aborda la preocupación de @ izogfif.
Coderer

171

Cada respuesta es bastante complicada. Aquí:

var url = window.location.href.split('?')[0];

Incluso si un? no está presente, aún devolverá el primer argumento, que será su URL completa, menos la cadena de consulta.

También es independiente del protocolo, lo que significa que incluso podría usarlo para cosas como ftp, itunes.etc.


39
en caso de que necesite quitar los anclajeswindow.location.href.split(/[?#]/)[0];
Bahattin Ungormus

de hecho, cada respuesta es bastante enrevesado
mehmet

@mehmet todos los oídos si tiene un enfoque más simple :)
Oddman

1
@Oddman, absolutamente no recuerdo lo que estaba pensando en ese momento, pero supongo que podría ser una afirmación afirmativa :))
mehmet

¿Por qué es (si es) esta respuesta mejor que la marcada como aceptada?
Vishal - JAVA - CQ

16

Utilizar indexOf

var url = "http://mysite.com/somedir/somefile/?aa";

if (url.indexOf("?")>-1){
url = url.substr(0,url.indexOf("?"));
}

5
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"    

url.substring(0,url.indexOf("?"));

3
Esto supone que ese parámetro está definido. Mucho mejor esurl.split('?')[0]
actimel

5

Puedes usar una expresión regular: window.location.href.match(/^[^\#\?]+/)[0]


5

Puede concat originy pathname, si hay un puerto como example.com:80ese, también se incluirá.

location.origin + location.pathname

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.