让我们从以下示例开始:
在同一目录中创建三个页面: 的test.html 的index.html
您的test.html:
<html>
<head>
<script>
function test()
{
alert('Going to google.com?');
window.location="http://google.com";
}
</script>
</head>
<body>
<a href='' onclick="test();">google.com</a><br/>
<input type="button" value="google" onclick="test();" />
<a href='' onmouseover="test();">google.com</a><br/>
</body>
</html>
现在检查IE上的test.html页面以及firefox或crome。
您会注意到以下几点:
为什么?
我的主要兴趣是第3点,因为它甚至给我们提醒,window.location失败。
答案 0 :(得分:3)
JavaScript事件触发,window.location
置位,然后链接的默认操作触发,浏览器转到'',(IIRC)解析为当前URI。
这与您点击链接,然后快速单击其他链接所获得的效果相同。浏览器在收到转到第二个的指令之前没有时间去第一个,然后转到第二个。如果你延迟函数的返回(通过把警报放在第二位),它就会有足够的时间让第一个URL的请求通过,而不是第二个。
您需要取消默认操作,当您使用内部事件属性时(不推荐,unobtrusive JavaScript是前进的方式),通过返回false来完成。
onclick="test(); return false;"
答案 1 :(得分:1)
试试这个:
<html>
<head>
<script>
function test()
{
alert('Going to google.com?');
window.location="http://google.com";
return false;
}
</script>
</head>
<body>
<a href='' onclick="Javascript:return test();">google.com</a><br/>
<input type="button" value="google" onclick="Javascript:return test();" />
<a href='' onmouseover="Javascript:return test();">google.com</a><br/>
</body>
</html>