首页 > 其他分享 >js中阻止事件冒泡与阻止事件默认行为

js中阻止事件冒泡与阻止事件默认行为

时间:2023-02-28 20:31:50浏览次数:42  
标签:false 默认 js 阻止 事件 event 冒泡


一、冒泡事件

我们都知道冒泡就像水底气泡浮到水面这一过程。冒泡事件即是事件从最底层逐个经过上面一级级事件的过程,就是冒泡事件。那么如何有效的阻止冒泡事件的发生?其实在非IE浏览器中提供了一个事件对象 stopPropagation,那么在IE浏览器中有没有一个对象去阻止冒泡事件呢,答案是肯定的,通过cancelBubble事件对象可以阻止。

冒泡事件我在​​点击打开链接​​中有更加详细的介绍,如果想要了解更多可以点击进去查看。此处我们直接举例子 (阻止事件冒泡的两种兼容处理)

function stopBubble(ev) {    
if(ev && ev.stopPropagation){
ev.stopPropagation(); //非IE下
} else {
window.event.cancelBubble = true; //IE下
}
};

也可以是

function cancelHandler(event){
var event=event||window.event;//兼容IE
//取消事件相关的默认行为
if(event.preventDefault) //标准技术
event.preventDefault();
if(event.returnValue) //兼容IE9之前的IE
event.returnValue=false;
return false; //用于处理使用对象属性注册的处理程序
}

默认事件:

浏览器的默认事件就是浏览器自己的行为,比如我们在点击<a href="#">的时候,浏览器跳转到指定页面。还有,当我们滚动鼠标时页面会向下滚动,但我们按空格键和按方向键时页面也会向下滚动,为了更好的用户体验,这时我们就需要阻止这种行为的发生。

function preventDefa(e){ 
if(window.event){
//IE中阻止函数器默认动作的方式
window.event.returnValue = false;
}
else{
//阻止默认浏览器动作(W3C)
e.preventDefault();
}
}

这种是兼容性写法,但是如果你只需要支持高版本浏览器的话,那么如上文一样,一句话即可。

obj.onclick = function (){ 
return false;
}

javascript的return false只会阻止默认行为,而是用jQuery的话则既阻止默认行为又防止对象冒泡



//原生js,只会阻止默认行为,不会停止冒泡
var a = document.getElementById("testA");
a.onclick = function(){
return false;//当然 也阻止了事件本身
};

既然return false 和 e.preventDefault()都是一样的效果,那它们有区别吗?当然有。 //仅仅是在HTML事件属性 和 DOM0级事件处理方法中 

才能通过返回 return false 的形式组织事件宿主的默认行

//jQuery,既阻止默认行为又停止冒泡
$("#testA").on('click',function(){
return false;//当然 也阻止了事件本身
});

总之:

当需要停止冒泡行为时,可以使用:

function stopBubble(e) { 
//如果提供了事件对象,则这是一个非IE浏览器
if ( e && e.stopPropagation ){
e.stopPropagation(); //因此它支持W3C的stopPropagation()方法
}else{
window.event.cancelBubble = true; //否则,我们需要使用IE的方式来取消事件冒泡
}
}

当需要阻止默认行为时,可以使用:

function stopDefault( e ) { 
if ( e && e.preventDefault ){
e.preventDefault(); //阻止默认浏览器动作(W3C)
}else {
window.event.returnValue = false; //IE中阻止函数器默认动作的方式
}
return false;
}

标签:false,默认,js,阻止,事件,event,冒泡
From: https://blog.51cto.com/u_15983333/6091786

相关文章

  • JS内存爆破问题
    原理检测到调试,格式化等,疯狂的在js文件,或者html中进行读写,cookie重写追加,字节追加,导致内存不足够,卡死内存爆破,指js通过死循环/频繁操作数据库(包括cookie)/频繁调取histo......
  • json(1)键值对
    好了进入正题json教程(1):键值对其实键值对非常好理解,毕竟生活中处处都有键可以理解为数据的名称值就是数据拿我们的幸运观众举个例子首先,他的名字是李子墨名字就......
  • 微信json对象 转换为json字符串传参给后端,后端解析
    普通js通常这样转换//这是一个json对象varjsonobj={"sztno":"330890811","transTime":"2018-5-708:00:36","amt":"50"};//json对象转成json字符串varjsonstr=JSON.s......
  • JS混淆解密技术研究与案例分析
    引言在现代互联网的世界中,JavaScript(JS)已成为最为流行和广泛使用的编程语言之一。JS的开发人员使用它来构建各种Web应用程序,包括网站、应用和游戏等。然而,随着JS应......
  • JsonResponse中文乱码问题
    直接使用JsonResponse返回结果中文乱码returnJsonResponse({'ret':0,'msg':f'id为{customer_id}的客户信息删除成功'})解决乱码问题可以添加json_dumps_params={'e......
  • zabbix钉钉告警js脚本
    varDingding={params:{},proxy:null,setParams:function(params){if(typeofparams!=='object'){return;}D......
  • JS文件夹上传解决方案
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持......
  • JS通过后台返回的Url下载文件
    需求:JS下载后台返回的url场景:用过window.open和window.location.href,效果不理想,都是打开一个新的网页(碰到txt和png是直接打开,不下载) 上代码:functiondownFile(id,file......
  • 【django-vue】前端取消默认样式 main.js配置 后端主页模块接口 跨域问题详解 项目自
    目录回顾上节课回顾今日内容1前端全局样式和js配置1.1global.css1.2settings.js1.3main.js2后端主页模块接口三种开发模式模型父类BaseModel轮播图模型类代码轮播图接......
  • sublime text 安装插件后js、ts代码底色变白色
    万能的朋友圈,使用sublimetext编辑器,安装插件后发现javascript和typescript代码的底色变成了白色。有谁知道是那个插件导致的?麻烦说一下谢谢…… ......