Любопытная проблема с перенаправлением с помощью location.href - PullRequest
0 голосов
/ 25 апреля 2010

Я сталкиваюсь с любопытной проблемой с перенаправлением ...

Посмотрите на этот небольшой пример: он работает, только если я добавлю вызов alert () после предложения перенаправления! Если я удалю оповещение (), оно больше не работает !!!

Есть идеи почему (я использую Firefox 3)?

Спасибо.

<html>



<script type="text/javascript">

function GotoPage() { 

    location.href = "http://www.yahoo.com";

    // Without this alert redirection does not work!!! 

    alert("Hello!"); 

}

</script>



<body>

    <form>

    <button onclick="javascript:GotoPage()">Go</button>

    </form>

</body>



</html>

Ответы [ 3 ]

4 голосов
/ 25 апреля 2010

Не уверен, но я полагаю, что если вы не вернете false в свой обработчик onclick, будет выполнено действие кнопки по умолчанию - и это не перенаправление.

Предупреждение останавливает браузер достаточно долго, поэтому перенаправление выполняется до того, как элемент управления возвращается к поведению по умолчанию для элемента кнопки.


Попробуйте использовать что-то вроде этого:

<button onclick="GotoPage(); return false;">Go</button>


Или попробуйте изменить функцию, чтобы она возвращала false:

function GotoPage() { 
    location.href = "http://www.yahoo.com";
    return false;
}

И возвратите в свой обработчик onclick, что функция вернула:

<button onclick="return GotoPage();">Go</button>


Кстати: нет необходимости в javascript: части.

0 голосов
/ 13 сентября 2013

Вы должны использовать window.location.assign вместо window.location.href

Однажды я использовал функцию, подобную вашей, без оператора оповещения, и когда я попробовал ее в FireFox, она не сработала. После этого я использовал функцию assign () вместо присваивания свойства href, и оно работало хорошо для меня.

0 голосов
/ 25 апреля 2010

Я считаю, что вы должны установить window.location, а не location.href.

function GotoPage() {
    window.location = "http://www.yahoo.com";
}
...