2009-10-31 10 views
232

Mam problem: Chcę przekierować za pośrednictwem JavaScript do powyższego katalogu. Mój kod:Przekierowanie do względnego adresu URL w kodzie JavaScript

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

Adres URL wygląda następująco:

domain.com/path/folder/index.php?file=abc & test = 123 & lol = chłodnym

Przekierowanie ma następującą postać:

domain.com/path/ & test = 123 & lol = chłodny

Ale chce mieć to:

domain.com/path/

Jak mogę to zrobić?

Odpowiedz

432

Można zrobić względną przekierowanie:

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

lub

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

Zobacz, dlaczego powinieneś użyć 'window.location.replace' http://stackoverflow.com/questions/503093/how-can-i-make-a-redirect-page-in-jquery/506004# 506004 – gideon

+37

Gdy chcesz zasymulować łącze, powinieneś użyć 'window.location.href'. Powinieneś używać tylko 'window.location.replace' kiedy chcesz symulować przekierowanie http (nie generując w ten sposób elementu historii). –

+20

Nawiasem mówiąc, 'document.location' miał być własnością tylko do odczytu. Bezpieczniej jest użyć 'window.location'. Zobacz [to pytanie] (http://stackoverflow.com/questions/2430936/whats-the-difference-between-window-location-and-document-location-in-javascript). –

10

przekierować do ../

+2

Dlaczego DV? Czy to nie zadziała? –

+0

Jeśli Twoja aplikacja jest hostowana w sub-uri, a aplikacja nie zna ścieżki podrzędnej. Jeśli jesteś na swoim katalogu głównym i robisz .../aplikacja nie będzie wiedzieć, jak wrócić do swojego katalogu głównego. Na przykład ta sama aplikacja jest hostowana pod adresem http://example.com/myapp/ i http://other.example.com/app2/ – ReggieB

10

Jeśli używasz location.hostname dostaniesz swoją część domain.com. Wtedy location.pathname da ci folder/path /. Chciałbym podzielić location.pathname przez/i ponownie złożyć URL. Ale jeśli nie potrzebujesz kwerendy, możesz po prostu przekierować do .., aby przejść do powyższego katalogu.

+0

Moja przeglądarka szczeka, gdy wybieram * location.path * i wydaje się, że rozpoznaje * location.pathname *. Poradnik? –

+0

location.path jest niepoprawny, powinien to być location.hostname. Dodałem do wpisu zmianę, aby to naprawić. – ygrichman

5

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

.. oznacza katalogu nadrzędnego.

+9

Wymaga kliknięcia lub innej nawigacji zainicjowanej przez użytkownika. – recursive

+0

Dzięki za to. To zaoszczędziło mi czasu – karthick

0

próbuję przekierować moją obecną stronę internetową do innych sekcji na tej samej stronie, przy użyciu JavaScript. To kontynuacja prac kod dla mnie:

location.href='/otherSection' 
Powiązane problemy