如何使用window.location.replace javascript?

时间:2011-11-28 09:44:11

标签: javascript html

我的网址

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

重定向页面

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

我想从page1.aspx重定向到page2.aspx

如何在page1.aspx中编写javascript?

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

前2给了我这个。

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

最后1给了我这个。

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

使用的正确方法是什么?

1 个答案:

答案 0 :(得分:48)

根本不包含路径信息,就像在链接中一样:

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

Here's a live example示例在

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

...和

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

...所以2页面使用

window.location.replace("3");

...而3页面使用

window.location.replace("2");

有关网址(特别是相对网址)的工作原理的详情,请参阅RFC3986。但基本上是:

  • 如果相对网址./开头,则会替换最后一个网段。所以:

      http://foo.com/one/two/page.html
    + bar.html
    = http://foo.com/one/two/bar.html
    
  • 如果相对网址以../开头,则会替换最后一段上面的一段:

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

    请注意,two子文件夹已被替换。多个../可用于向上移动多个级别:

      http://foo.com/one/two/three/four/page.html
    + ../../bar.html
    = http://foo.com/one/two/bar.html
    
  • 如果相对URL以单个/开头,它将替换主机名(和端口,如果有)之后的所有内容。所以:

      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
    
  • 如果相对网址以//开头,则会替换协议后的所有内容,因此:

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

    (这在加载资源时非常方便,您希望避免担心httphttps以及混合内容警告。)