2011-11-28 21 views
15

Mis direcciones URLCómo usar window.location.replace javascript?

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 

redireccionante Página

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

quiero cambiarlo desde la page1.aspx a page2.aspx

Cómo escribir un javascript en page1.aspx?

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

Primero 2 me dio esto.

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

Última 1 me esta esto.

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

¿Cuál es la forma correcta de usar?

+0

¿Qué estás tratando de hacer exactamente? – JohnP

+0

parece que necesita una forma de reescritura de url? – david

Respuesta

43

no incluyen información de ruta en absoluto, al igual que en un enlace:

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

Here's a live example El ejemplo cambia entre

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

... y

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

... y entonces la página 2 usa

window.location.replace("3"); 

... y la página 3 utiliza

window.location.replace("2"); 

Para más información sobre cómo URL (y en particular, las direcciones URL relativas) de trabajo, ver RFC3986. Pero básicamente:

  • Si una dirección URL relativa no se comienzo con . o /, que sustituye el último segmento. Por lo tanto:

    http://foo.com/one/two/page.html 
    + bar.html 
    = http://foo.com/one/two/bar.html 
    
  • Si una dirección URL relativa comienza con ../, al que sustituye el último segmento y la que tiene encima:

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

    Tenga en cuenta que la subcarpeta two ha sido reemplazado. Múltiples ../ s se pueden utilizar para subir múltiples niveles:

    http://foo.com/one/two/three/four/page.html 
    + ../../bar.html 
    = http://foo.com/one/two/bar.html 
    
  • Si una dirección URL relativa comienza con un solo /, que reemplaza todo después de que el nombre de host (y el puerto, en su caso).Por lo tanto:

    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 
    
  • Si una dirección URL relativa comienza con //, que reemplaza todo siguiendo el protocolo, por lo que:

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

    (Esto es útil cuando se cargan los recursos y se quiere evitar tener que preocuparse por http vs https y advertencias de contenido mixto)

+0

No es así. Cargará la misma página. – william

+0

@william: No si no está en 'page2.aspx'. Si se encuentra en 'http: // www.mysite.com/carpeta1/page1.aspx' (con o sin cadenas de consulta después de él), lo anterior le llevará a' http://www.mysite.com/folder1/page2.aspx'. Esta es la forma más básica de URL relativa. –

+0

@william: si lo piensas bien, el segundo y el tercer formato de URL de tu pregunta también son consistentes con lo que T.J. ha aconsejado. – nnnnnn

Cuestiones relacionadas