JavaScript中window.location.href不起作用

81 篇文章 7 订阅

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

解决方案

  1. 加入一行代码:window.event.returnValue = false;

    <script>
        $(function(){
            $('a').on('click',function(){
                //进入百度
                window.location.href = 'http://www.baidu.com';
                window.event.returnValue = false;
            });
        })
    </script>
    
  2. 加入一行代码:return false;

    <script>
        $(function(){
            $('a').on('click',function(){
                //进入百度
                window.location.href = 'http://www.baidu.com';
                return false;
            });
        })
    </script>
    
  3. 加入一行代码:window.event.preventDefault();

    <script>
        $(function(){
            $('a').on('click',function(){
                //进入百度
                window.location.href = 'http://www.baidu.com';
                //此方法IE不支持
                window.event.preventDefault();
            });
        })
    </script>
    

这三行代码的内部运行机制不同,但是达到的效果是一样的,都是阻止默认事件

放到代码中,可以理解为阻止了超链接的默认跳转事件。

但是第三种方法IE浏览器不支持,所以推荐使用前两种。

情况二:

描述window.location.hrefsubmit按钮配合使用。

代码

<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,所以也会导致出问题。

解决方案

  1. 使用button按钮。

    <body>
        <form action="" method="">
            <input type="button" value="提交">
        </form>
    </body>
    
  2. 方法和情况一的相同,在javascript中加入一行代码:

    window.event.returnValue = false;或者return false;或者window.event.preventDefault();

简单说一下,button是一个单纯的按钮,使用它就不用担心与按钮本身事件的执行顺序问题。

加入的三行代码,依然是阻止默认事件,不过这次阻止的是表单的默认提交。


这些方法都可以解决常见的window.location.href不执行的问题,希望可以帮到你。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值