Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用location.href时出现奇怪的重定向问题_Javascript_Redirect - Fatal编程技术网

Javascript 使用location.href时出现奇怪的重定向问题

Javascript 使用location.href时出现奇怪的重定向问题,javascript,redirect,Javascript,Redirect,我面临一个奇怪的重定向问题 看看这个小例子:只有在重定向语句之后添加alert()调用,它才会起作用!如果我删除警报(),它将不再工作 知道为什么吗(我正在使用Firefox3) 谢谢 <html> <script type="text/javascript"> function GotoPage() { location.href = "http://www.yahoo.com"; // Without this alert redirec

我面临一个奇怪的重定向问题

看看这个小例子:只有在重定向语句之后添加alert()调用,它才会起作用!如果我删除警报(),它将不再工作

知道为什么吗(我正在使用Firefox3)

谢谢

<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>

函数GotoPage(){
location.href=”http://www.yahoo.com";
//如果没有此警报,重定向将无法工作!!!
警惕(“你好!”);
}
去

不确定,但我认为,如果在
onclick
处理程序中不返回
false
,则会执行按钮的默认操作,这不是重定向

该警报会将浏览器冻结足够长的时间,以便在控件返回到按钮元素的默认行为之前进行重定向


尝试使用类似以下内容:

<button onclick="GotoPage(); return false;">Go</button>
并在onclick处理程序中返回函数返回的内容:

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


顺便说一句:不需要
javascript:
部分。

不确定,但我认为,如果在
onclick
处理程序中不返回
false
,则会执行按钮的默认操作,而不是重定向

该警报会将浏览器冻结足够长的时间,以便在控件返回到按钮元素的默认行为之前进行重定向


尝试使用类似以下内容:

<button onclick="GotoPage(); return false;">Go</button>
并在onclick处理程序中返回函数返回的内容:

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


顺便说一句:不需要
javascript:
部分。

我认为应该设置window.location,而不是location.href

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

我认为应该设置window.location,而不是location.href

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

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


有一次,我使用了类似于您的函数,但没有alert语句,当我在FireFox上尝试它时,它无法工作。在那之后,我使用函数assign()而不是分配href属性,它对我很有效。

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


有一次,我使用了类似于您的函数,但没有alert语句,当我在FireFox上尝试它时,它无法工作。在那之后,我使用函数assign()而不是分配href属性,它对我很有效。

Pascal,非常感谢!第一个选项解决了问题(其他选项没有)!!但是我仍然很好奇为什么添加alert()调用可以使它工作???无论如何,再次谢谢你!致以最诚挚的问候,不客气;;;此警报将阻止浏览器执行按钮元素的默认操作(此时,它将阻止函数结束,并将控制权返回给其调用者)。另一方面,location.href是在警报之前分配的,因此正在执行。Pascal,非常感谢!第一个选项解决了问题(其他选项没有)!!但是我仍然很好奇为什么添加alert()调用可以使它工作???无论如何,再次谢谢你!致以最诚挚的问候,不客气;;;此警报将阻止浏览器执行按钮元素的默认操作(此时,它将阻止函数结束,并将控制权返回给其调用者)。另一方面,location.href是在警报之前分配的,因此它正在被执行。实际上两者都没有。您应该指定位置对象在窗口对象中(以省去命名冲突),以及它是要设置的href属性(因为某些浏览器无法将URL直接指定给位置对象)。因此,您应该使用
window.location.href
。实际上两者都不使用。您应该指定位置对象在窗口对象中(以省去命名冲突),以及它是要设置的href属性(因为某些浏览器无法将URL直接指定给位置对象)。因此,您应该使用
window.location.href