Come ottenere l'URL senza parametri in JavaScript?


176

Se uso:

alert(window.location.href);

Ottengo tutto, comprese le stringhe di query. C'è un modo per ottenere solo la parte principale dell'URL, ad esempio:

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

invece di

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

possibile duplicato di Rimuovi querystring dall'URL
Alex Angas

Risposte:


283

Questo è possibile, ma dovrai costruirlo manualmente locationdall'oggetto :

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

14
Si noti che non è necessario fornire location.protocol poiché tutti i browser moderni (incluso IE6) erediteranno automaticamente il protocollo corrente. vale a dire:'//' + location.host + location.pathname
JonnyReeves,

10
@JonnyReeves Se lo stai usando nel documento corrente, è vero: un buon punto. Ci sono occasioni in cui potrebbe essere necessario, ad esempio se si visualizza l'URL come testo normale.
martedì

1
@lonesomeday la tua risposta implica che è l'unico modo, che non lo è.
Oddman,

5
Manca la porta, quindi questo restituirà un risultato errato per la paginahttp://www.example.com:8080/asdf.html?foo=bar
izogfif

3
Puoi salvare alcuni personaggi con location.origincui credo risolva anche la preoccupazione di @ izogfif.
Coderer,

171

Ogni risposta è piuttosto contorta. Qui:

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

Anche se a? non è presente, restituirà comunque il primo argomento, che sarà l'URL completo, meno la stringa di query.

È anche indipendente dal protocollo, il che significa che potresti persino usarlo per cose come ftp, itunes.etc.


39
nel caso in cui sia necessario rimuovere le ancorewindow.location.href.split(/[?#]/)[0];
Bahattin Ungormus,

infatti ogni risposta è piuttosto contorta
mehmet

@mehmet tutte le orecchie se hai un approccio più semplice :)
Oddman,

1
@Oddman, non ricordo assolutamente cosa stavo pensando allora, ma immagino che potrebbe essere un'affermazione affermativa :))
mehmet

Perché (se lo è) questa risposta è migliore di quella contrassegnata come accettata ??
Vishal - JAVA - CQ

16

Uso 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
Questo presuppone che quel parametro sia definito. Molto megliourl.split('?')[0]
actimel,

5

Puoi usare un'espressione regolare: window.location.href.match(/^[^\#\?]+/)[0]


5

Puoi concatene origine pathname, se esiste, una porta come quella example.com:80, verrà inclusa anche quella.

location.origin + location.pathname

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.