Wie erhalte ich die URL ohne Parameter in JavaScript?


176

Wenn ich benutze:

alert(window.location.href);

Ich bekomme alles einschließlich Abfragezeichenfolgen. Gibt es eine Möglichkeit, nur den Haupt-URL-Teil abzurufen, zum Beispiel:

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

anstatt

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

Mögliches Duplikat von Querystring von URL entfernen
Alex Angas

Antworten:


282

Dies ist möglich, aber Sie müssen es manuell aus dem locationObjekt erstellen :

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

14
Beachten Sie, dass Sie das location.protocol nicht angeben müssen, da alle modernen Browser (einschließlich IE6) das aktuelle Protokoll automatisch erben. dh:'//' + location.host + location.pathname
JonnyReeves

10
@JonnyReeves Wenn Sie es im aktuellen Dokument verwenden, ist das wahr: guter Punkt. Es kann vorkommen, dass dies erforderlich ist, z. B. wenn die URL als einfacher Text ausgegeben wird.
einsamer

1
@lonesomeday Ihre Antwort impliziert, dass es der einzige Weg ist, der es nicht ist.
Oddman

5
http://www.example.com:8080/asdf.html?foo=bar
Da

3
Sie können ein paar Zeichen speichern, mit location.origindenen meines Erachtens auch das Anliegen von @ izogfif angesprochen wird.
Coderer

171

Jede Antwort ist ziemlich verworren. Hier:

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

Auch wenn ein? ist nicht vorhanden, gibt es immer noch das erste Argument zurück, bei dem es sich um Ihre vollständige URL abzüglich der Abfragezeichenfolge handelt.

Es ist auch protokollunabhängig, was bedeutet, dass Sie es sogar für Dinge wie ftp, itunes.etc verwenden können.


39
falls Sie die Anker entfernen müssenwindow.location.href.split(/[?#]/)[0];
Bahattin Ungormus

in der Tat ist jede Antwort ziemlich verworren
mehmet

@mehmet alle Ohren, wenn Sie einen einfacheren Ansatz haben :)
Oddman

1
@Oddman, ich erinnere mich absolut nicht, was ich damals gedacht habe, aber ich denke, das könnte eine positive Aussage sein :))
mehmet

Warum ist (wenn ja) diese Antwort besser als die als akzeptiert gekennzeichnete?
Vishal - JAVA - CQ

16

Verwenden 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
Dies setzt voraus, dass dieser Parameter definiert ist. Viel besser isturl.split('?')[0]
Actimel

5

Sie können einen regulären Ausdruck verwenden: window.location.href.match(/^[^\#\?]+/)[0]


5

Sie können sich darauf konzentrieren, originund pathnamewenn ein Port wie vorhanden vorhanden example.com:80ist, wird dieser ebenfalls enthalten sein.

location.origin + location.pathname

2

Wenn Sie sich die Dokumentation ansehen , können Sie nur die Eigenschaften, an denen Sie interessiert sind, aus dem windowObjekt übernehmen, d. H.

protocol + '//' + hostname + pathname
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.