window.location.href不跳转解决方案
window.location.href=''
,就像a
链接中的href
,其实二者的作用是一样的,我们都可以通过点击,跳转到另一个页面。- 但是有些时候我们在进行配合使用时,却很容易造成
window.location.href
不执行。
情况一:
描述:window.location.href
与<a href=""></a>
配合使用。
代码:
<body>
<!-- 进入京东 -->
<a href="http://www.jd.com">我是超链接</a>
</body>
<!-- 可以使用原生JavaScript,否则自行引入jQuery即可 -->
<script src="lib/jquery-2.1.4/jquery.min.js"></script>
<script>
$(function(){
$('a').on('click',function(){
//进入百度
window.location.href = 'http://www.baidu.com';
});
})
</script>
解释:
- 运行代码可以看到,点击按钮进入了京东首页,
window.location.href
不执行。 - 这种情况下出问题是非常正常的,因为
a
链接的执行是优先于window.location.href
的。
解决方案:
-
加入一行代码:
window.event.returnValue = false;
<script> $(function(){ $('a').on('click',function(){ //进入百度 window.location.href = 'http://www.baidu.com'; window.event.returnValue = false; }); }) </script>
-
加入一行代码:
return false;
<script> $(function(){ $('a').on('click',function(){ //进入百度 window.location.href = 'http://www.baidu.com'; return false; }); }) </script>
-
加入一行代码:
window.event.preventDefault();
<script> $(function(){ $('a').on('click',function(){ //进入百度 window.location.href = 'http://www.baidu.com'; //此方法IE不支持 window.event.preventDefault(); }); }) </script>
这三行代码的内部运行机制不同,但是达到的效果是一样的,都是阻止默认事件。
放到代码中,可以理解为阻止了超链接的默认跳转事件。
但是第三种方法IE浏览器不支持,所以推荐使用前两种。
情况二:
描述:window.location.href
与submit
按钮配合使用。
代码:
<body>
<form action="" method="">
<input type="submit" value="提交">
</form>
</body>
<!-- 可以使用原生JavaScript,否则自行引入jQuery即可 -->
<script src="lib/jquery-2.1.4/jquery.min.js"></script>
<script>
$(function(){
$('input').on('click',function(){
window.location.href = 'http://www.baidu.com';
});
})
</script>
解释:
submit
按钮如果不和表单配合使用的话,是没问题的,可以正常执行window.location.href
。submit
内部是集成了提交事件的,与表单配合使用时,这个事件的执行优先于window.location.href
,所以也会导致出问题。
解决方案:
-
使用
button
按钮。<body> <form action="" method=""> <input type="button" value="提交"> </form> </body>
-
方法和情况一的相同,在
javascript
中加入一行代码:window.event.returnValue = false;
或者return false;
或者window.event.preventDefault();
。
简单说一下,button
是一个单纯的按钮,使用它就不用担心与按钮本身事件的执行顺序问题。
加入的三行代码,依然是阻止默认事件,不过这次阻止的是表单的默认提交。
这些方法都可以解决常见的window.location.href
不执行的问题,希望可以帮到你。