2011-11-28 9 views
15

Moje adresyJak korzystać z javascript window.location.replace?

http://www.mysite.com/folder1/page1.aspx 
http://www.mysite.com/folder1/page1.aspx?id=1 
http://www.mysite.com/folder1/page1.aspx?id=1&dt=20111128 

Przekierowywanie Strona

http://www.mysite.com/folder1/page2.aspx 

Chcę przekierować z page1.aspx do page2.aspx

Jak napisać skrypt w page1.aspx?

window.location.replace("/page2.aspx"); 
window.location.replace("../page2.aspx"); 
window.location.replace("~/page2.aspx"); 

Pierwsze 2 dały mi to.

http://www.mysite.com/page2.aspx 

Ostatnie 1 dało mi to.

http://www.mysite.com/folder1/~/page2.aspx 

Jaki jest prawidłowy sposób użycia?

+0

Co dokładnie próbujesz zrobić? – JohnP

+0

wygląda na to, że potrzebujesz formy przepisywania adresu URL? – david

Odpowiedz

43

zawierać żadnych informacji o ścieżce w ogóle, podobnie jak w linku:

window.location.replace("page2.aspx"); 

Here's a live example Przykład przełącza pomiędzy

http://jsbin.com/asupup/2 -- The "2" corresponds to your "page1.aspx"

... i

http://jsbin.com/asupup/3 -- The "3" corresponds to your "page2.aspx"

... tak więc strona 2 używa

window.location.replace("3"); 

... a strona 3 wykorzystuje

window.location.replace("2"); 

uzyskać więcej informacji na temat adresów URL (w szczególności adresów URL względnych) praca, patrz RFC3986. Ale zasadniczo:

  • Jeśli względny URL nie początek z . lub /, zastępuje ostatni segment. Więc:

    http://foo.com/one/two/page.html 
    + bar.html 
    = http://foo.com/one/two/bar.html 
    
  • Jeśli względny adres URL zaczyna się ../, zastępuje ostatni segment i jednej nad nim:

    http://foo.com/one/two/page.html 
    + ../bar.html 
    = http://foo.com/one/bar.html 
    

    pamiętać, że two podfolder została zastąpiona. Wiele ../ s mogą być wykorzystane, aby przenieść się na wielu poziomach:

    http://foo.com/one/two/three/four/page.html 
    + ../../bar.html 
    = http://foo.com/one/two/bar.html 
    
  • Jeśli względny adres URL zaczyna się od jednego /, zastępuje wszystko po nazwie hosta i portu (jeśli występują).Więc:

    http://foo.com/one/two/page.html 
    + /bar.html 
    = http://foo.com/bar.html 
    
        http://foo.com:8080/one/two/page.html 
    + /bar.html 
    = http://foo.com:8080/bar.html 
    
  • Jeśli względny adres URL zaczyna się //, zastępuje wszystko zgodnie z protokołem, więc:

    http://ex.com/folder/page.html 
    + //foo.com 
    = http://foo.com 
    

    (Jest to przydatne podczas ładowania zasobów i chcesz uniknąć martwić http vs https i ostrzeżenia o treści mieszanej.)

+0

Nie ma. Załaduje tę samą stronę. – william

+0

@william: Nie, jeśli nie jesteś na 'page2.aspx'. Jeśli jesteś na 'http: // www.mysite.com/folder1/page1.aspx' (z ciągami zapytań lub bez nich), powyższe przeniesie Cię do' http://www.mysite.com/folder1/page2.aspx'. Jest to najbardziej podstawowa forma względnego adresu URL. –

+0

@william - jeśli myślisz o tym, drugi i trzeci format adresu URL z twojego pytania są również zgodne z tym, co T.J. doradził. – nnnnnn

Powiązane problemy