2011-01-27 2 views
2

Я новичок в javascript window.location, и я пытался использовать его для прямого доступа к определенным страницам, когда определенные фразы вводятся в окно подсказки. Правильно ли я сделал это ниже? По какой-то причине это не работает.Как работает 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()"> 
+2

Вы вообще вызываете функцию? – kjy112

+0

Мне кажется правильным ... 'window.location' перенаправляет браузер на все, что вы ему рассказываете. – JCOC611

+0

Да, я называю это нагрузкой на тело. Я проверил, что работал до того, как я добавил оператор if, но я опубликую остальное на всякий случай – chromedude

ответ

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."); 
    } 
} 
2

Если вы установите window.location в путь, как «apple.com», то путь берется как родственник путь, значит, если вы в настоящее время просматриваете Google, он будет искать «google.com/path».

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

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

Откладывая ли это хорошая идея, чтобы пользователи помнить имена страниц, есть две проблемы в коде.

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

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

+0

Да, я знаю, что заставить пользователей помнить названия страниц - проблема вообще, но в этом случае это больше, чтобы люди не могли находить страницы, за исключением случаев, когда я им прямо говорю. – chromedude

0

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

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

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

window.location.replace("http://www.example.com/"); 
Смежные вопросы