javascript window.location是如何工作的?

时间:2011-01-27 03:03:10

标签: javascript debugging redirect

我是javascript window.location的新手,当我将某些短语输入到提示框中时,我试图将其用于指向某些页面。我在下面的方式是否正确?由于某些原因,它似乎不起作用。

<html>
<head>
<script>
function desiredPg() {
    var pgDesired = prompt("What do you want?");
    if (pgDesired == "Log In" || "log in") {
        window.location = "google.com";
    } else if (pgDesired == "Register" || "register") {
        window.location = "apple.com";
    } else {
        alert("Please enter a valid page name. Do not forget to use appropriate spaces and capitalize if necessary");
    }
}
</script>

</head>
<body onLoad="desiredPg()">

4 个答案:

答案 0 :(得分:4)

如果您想转到其他主机,则需要使用绝对网址,因此只需将http://添加到字符串中。

将字符串转换为小写,因此您只需执行一次比较。

我建议您使用哈希,这样可以清理代码并且只需要一个if条件:

function desiredPg() {
  var pgDesired = prompt("What do you want?");
  var sites = {'log in': 'http://google.com', 'register':'http://apple.com'};

  if (typeof sites[pgDesired.toLowerCase()] !== 'undefined') {
     window.location = sites[pgDesired.toLowerCase()];
  } else {
     alert("Please enter a valid page name.");
  }
}

答案 1 :(得分:2)

如果您将window.location设置为'apple.com'之类的路径,则路径将被视为相对路径,表示如果您当前正在查看Google,则会搜索'google.com/path'。

尝试使用绝对路径,包括协议..

  window.location = "http://apple.com";

答案 2 :(得分:0)

除了让用户记住页面名称是否一个好主意外,代码中还存在两个问题。

首先,你必须分别评估一个if语句中的每个条件,所以那些就像pgDesired=="A" || pgDesired=="B"(尽管Jacob的解决方案更健壮)

其次,你需要使用绝对路径作为ring0提到。所以window.location = "http://apple.com";

答案 3 :(得分:0)

又一个挑剔:这种做法的“标准”方式是通过href的{​​{1}}属性:

window.location

如果您想将当前位置保留在浏览器的历史记录之外,请使用window.location.href = "http://www.example.com/";

replace()