1

我正在尝试通过以下基本命令实现看似非常简单的 JavaScript 重定向:

window.location.href = "http://www.somesite.com";

到目前为止一切顺利,它有效。我也可以通过以下方法做到这一点:

location.replace("http://www.somesite.com");

这里没问题,它再次工作!当我从字符串中松开协议时,问题就来了:

window.location.href = "www.somesite.com";

或者:

location.replace("www.somesite.com");

它只是将新位置附加到当前 url:

www.currentsite.com/www.somesite.com

当然,这不是我想要的。有没有办法强制重定向?

4

3 回答 3

10

一种方法是像这样使用相对于协议的url:

window.location = "//www.somesite.com";

或者

window.location = "//somesite.com";

这样,它将重定向并且浏览器本身将负责找出协议部分,例如httphttps

工作示例

于 2012-07-05T07:03:16.883 回答
1

该协议是必需的。

浏览器怎么会知道

location.replace("mysite.pl");

是要去波兰网站还是当前网站上的 Perl 脚本?

于 2012-07-05T07:01:54.607 回答
1

如果 URL 不存在,你可以做这样的事情来添加http://它......虽然我想不出一个理由不只是自己包含它。为什么要把事情复杂化?

​function redirect(url) {
    if(url.substr(4) != "http")
        url = "http://" + url;
    window.location.href = url;
}
redirect("www.google.com")

​</p>

于 2012-07-05T07:03:23.837 回答