Umleiten zu einer relativen URL in JavaScript


363

Ich habe ein Problem: Ich möchte über JavaScript in ein Verzeichnis oben umleiten. Mein Code:

location.href = (location.href).substr(0, (location.href).lastIndexOf('folder'));

Die URL sieht folgendermaßen aus:

example.com/path/folder/index.php?file=abc&test=123&lol=cool

Die Weiterleitung wirkt sich genau so aus:

example.com/path/&test=123&lol=cool

Aber will das haben:

example.com/path/

Wie könnte ich das machen?

Antworten:


684

Sie können eine relative Umleitung durchführen:

window.location.href = '../'; //one level up

oder

window.location.href = '/path'; //relative to domain

29
Sehen Sie, warum Sie window.location.replace stackoverflow.com/questions/503093/…
gideon

52
Wenn Sie einen Link simulieren möchten, sollten Sie verwenden window.location.href. Sie sollten nur verwenden, window.location.replacewenn Sie eine http-Umleitung simulieren möchten (und somit kein Verlaufselement generieren).
Benji XVI

24
War übrigens document.locationals schreibgeschützte Eigenschaft gedacht. Es ist sicherer zu bedienen window.location. Siehe diese Frage .
Benji XVI

6
Ich habe festgestellt, dass die Verwendung window.location.href = '../'zum Stammverzeichnis der Site umgeleitet wurde und nicht wie erwartet "eine Ebene höher". Wenn die aktuelle Seite "www.example.com/customers/list" ist, musste ich verwenden './'. Ich denke, das liegt daran, dass "Liste" nicht als Verzeichnisebene betrachtet wird.
Marcus Cunningham

2
@MarcusCunningham, in Ihrem Beispiel ist das Verzeichnis / customers / - also "eine Ebene höher" ist www.example.com/. Wenn Ihre Beispiel-URL nun www.example.com/customers/list/
lautet, werden

12

Wenn Sie verwenden, erhalten location.hostnameSie Ihren domain.com-Teil. Dann location.pathnamegeben Sie / Pfad / Ordner. Ich würde location.pathnamedurch / teilen und die URL wieder zusammensetzen. Wenn Sie den Querystring nicht benötigen, können Sie einfach umleiten, ..um in ein Verzeichnis oben zu wechseln .


Mein Browser bellt, wenn ich auf location.path gehe, und es scheint nur location.pathname zu erkennen . Tipps?
Konrad Viltersten

location.path ist falsch, es sollte location.hostname sein. Ich habe dem Beitrag eine Bearbeitung hinzugefügt, um dies zu beheben.
Ygrichman



5

<a href="..">no JS needed</a>

.. bedeutet übergeordnetes Verzeichnis.


14
Dies erfordert einen Klick oder eine andere vom Benutzer initiierte Navigation.
rekursiv

2

Ich versuche, meine aktuelle Website mithilfe von JavaScript auf einen anderen Abschnitt auf derselben Seite umzuleiten. Dieser folgende Code funktioniert für mich:

location.href='/otherSection'

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.