【问题标题】:How to use window.location.replace javascript?如何使用 window.location.replace javascript?
【发布时间】:2011-11-28 09:44:10
【问题描述】:

我的网址

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

最后一个给了我这个。

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

正确的使用方法是什么?

【问题讨论】:

  • 你到底想做什么?
  • 看起来您需要某种形式的 url 重写?

标签: javascript html


【解决方案1】:

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

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

Here's a live example示例切换

http://jsbin.com/asupup/2 -- “2”对应你的“page1.aspx”

...和

http://jsbin.com/asupup/3 -- “3”对应你的“page2.aspx”

...所以2 页面使用

window.location.replace("3");

...3 页面使用

window.location.replace("2");

有关 URL(尤其是相对 URL)如何工作的更多信息,请参阅RFC3986。但基本上:

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

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

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

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

        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
    
  • 如果相对 URL 以 // 开头,它将替换协议后面的所有内容,因此:

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

    (这在加载资源时很方便,并且您不想担心 httphttps 和混合内容警告。)

【讨论】:

  • 它没有。它将加载相同的页面。
  • @william:如果您不在page2.aspx 上,则不会。如果你在http://www.mysite.com/folder1/page1.aspx(后面有或没有查询字符串),上面将带你到http://www.mysite.com/folder1/page2.aspx。这是相对 url 最基本的形式。
  • @william - 如果您考虑一下,您问题中的第二个和第三个 URL 格式也与 T.J.已建议。
  • 这意味着.. 如果我的 URL 是 http://www.mysite.com/folder1http://www.mysite.com/folder1/page1.aspx?id=52 将不起作用??
  • @william:当您提供如上所示的简单页面名称时,它将替换基本 URL 的最后一段。因此,如果您使用的是http://www.mysite.com/folder1/page1.aspx,并且相对 URL 是page2.aspx,那么您最终会得到http://www.mysite.com/folder1/page2.aspx。如果您的起点不同,您最终会得到不同的结果(因为那是 relative URL 的起点)。起点http://www.mysite.com/folder1http://www.mysite.com/folder1/page1.aspx?id=52不同,第二个比第一个层次更深。
猜你喜欢
  • 2017-06-03
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2018-07-06
  • 2012-12-02
  • 2020-09-15
  • 2012-06-09
  • 2015-09-05
相关资源
最近更新 更多