使用location.href的好奇重定向问题

时间:2010-04-25 13:16:11

标签: javascript redirect

我面临重定向的奇怪问题......

看看这个小例子:只有在重定向句子之后添加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 个答案:

答案 0 :(得分:4)

不确定,但我想如果你不在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:部分。

答案 1 :(得分:0)

我相信你应该设置window.location,而不是location.href。

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

答案 2 :(得分:0)

您应该使用window.location.assign而不是window.location.href

有一次,我在没有警告声明的情况下使用了像你这样的功能,当我在FireFox上试用它时,它不起作用。之后,我使用函数assign()而不是分配href属性,它对我来说效果很好。