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
Tyler
quelle
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
einsamer Tag
quelle
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.

Seltsamer Mann
quelle
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("?"));
}
Niklas
quelle
5
var url = "tp://mysite.com/somedir/somefile/?foo=bar&loo=goo"    

url.substring(0,url.indexOf("?"));
Headshota
quelle
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]

Mic
quelle
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
AamirR
quelle
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
planetjones
quelle