Как работает javascript window.location? - PullRequest
2 голосов
/ 27 января 2011

Я новичок в 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 ]

4 голосов
/ 27 января 2011

Вам нужно использовать абсолютные URL , если вы хотите перейти на другой хост, поэтому просто добавьте 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.");
  }
}
2 голосов
/ 27 января 2011

Если вы установите window.location для пути, подобного 'apple.com', путь будет воспринят как относительный путь, это означает, что если вы просматриваете Google, он будет искать "Google".com / path '.

Попробуйте использовать абсолютный путь, включая протокол ..

  window.location = "http://apple.com";
0 голосов
/ 27 января 2011

Еще один придирка: «Стандартный» способ сделать это - через свойство href window.location:

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

Если вы хотите, чтобы текущее местоположение не попало в историю браузера,используйте replace():

window.location.replace("http://www.example.com/");
0 голосов
/ 27 января 2011

Если не учитывать, стоит ли пользователям помнить имена страниц, в коде есть две проблемы.

Во-первых, вы должны оценивать каждое условие в операторе if отдельно, поэтому они будут выглядеть как pgDesired=="A" || pgDesired=="B" (хотя решение Иакова более надежно)

Во-вторых, вам нужно использовать абсолютный путь, как указано в ring0. Итак window.location = "http://apple.com";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...