js阻止浏览器的默认行为及冒泡

浏览器的默认行为

阻止浏览器的默认行为

function preventDefault(e) {
    if (e && e.preventDefault) {
        e.preventDefault();
    } else {
        window.event.returnValue = false;
    }
    return false;
}

阻止事件冒泡

function stopPropagation(e) {
    if (e && e.stopPropagation) {
        e.stopPropagation();
    } else {
        window.event.cancelBubble = true;
    }
    return false;
}

工作小bug解决记

问题描述:

  • 页面上有个表单,用于提交表单的按钮是button,用jQuery来响应这个按钮的点击行为,通过post提交,用户输完一串input之后,直接按回车键,相当于点击了那个button,出现bug:一按回车,就跳转到了另外一个页面。
    原因:需要阻止浏览器的默认行为,因为submit的默认行为是提交表单,那个自定义的onClick事件就不会执行了。

解决办法:

  • 要先取消默认行为,然后执行jQuery代码来提交。因为若type=”submit”,直接点击按钮会跳转到另外一个页面,若type=”button”,则点击按钮不会跳转,但是按回车键也会跳转到另一个页面。

扩展:

  • 要注意,在onkeydown事件中调用preventDefault(e) 函数可行,但是在onkeyup事件中调用就不起作用了。
  • a标签的href若为空,如果不阻止浏览器的默认行为,产生的效果是刷新页面。若href=”javascript:void(0);” 可以阻止默认行为。若href=”#”会阻止默认行为,但是会影响页面的url,url后面会增加一个#号,有可能会影响路由,会触发react-router里的onUpdate事件,从而产生一些影响,如重新渲染整个组件。
  • jQuery的写法:
    • return false 阻止默认事件和冒泡事件
    • event.preventDefault() 只阻止默认事件
    • event.stopPropagation() 只阻止冒泡事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值