阻止事件
事件 阻止
2023-09-14 09:06:34 时间
一。取消浏览器对事件的默认行为(响应)(比如标签的跳转等)并停止事件的继续传播。
function stopEvent (evt)
{
var evt = evt || window.event;
if (evt.preventDefault) {
evt.preventDefault();
evt.stopPropagation();
} else {
evt.returnValue = false;//IE
evt.cancelBubble = true;//IE
}
}
二。只阻止事件继续传播(不取消默认行为)即停止事件冒泡
function stopEvent (evt)
{
var evt = evt || window.event;
if (evt.stopPropagation) {
evt.stopPropagation();
} else {
evt.cancelBubble = true;//IE
}
}
三。只取消默认行为(不阻止事件的继续传播)
function stopEvent (evt)
{
var evt = evt || window.event;
if (evt.preventDefault) {
evt.preventDefault();//DOM
} else {
evt.returnValue = false;//IE
}
}
例:
var EX = {
//添加事件
addEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.addEventListener){ //兼容IE8以上
me.addEventListener(k,v,false); //k是一个事件名;v是一个函数;false表示事件冒泡执行
}else if(me.attachEvent){ //兼容处理ie8及以下
me.attachEvent('on'+k,v); //on+k事件名,如click,v 一个函数,此处的格式为 me.attachEvent('onclick',function)
}else{
me['on'+k] = v; //兼容处理好了后,假设me[onclick] = function = me.onclick=function;
}
},
//移除事件
removeEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.removeEventListener){ //对应addEventListener()方法
me.removeEventListener(k,v,false);
}else if(me.detachEvent){ //对应attachEvent()方法
me.detachEvent('on'+k,v);
}else{
me['on'+k] = null; //空对象指针
}
},
//停止事件,取消事件冒泡传递
stop:function(evt){
evt = evt||window.event;
//stopPropagation()方法,阻止分派到其他节点
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
}
}
//添加事件
addEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.addEventListener){ //兼容IE8以上
me.addEventListener(k,v,false); //k是一个事件名;v是一个函数;false表示事件冒泡执行
}else if(me.attachEvent){ //兼容处理ie8及以下
me.attachEvent('on'+k,v); //on+k事件名,如click,v 一个函数,此处的格式为 me.attachEvent('onclick',function)
}else{
me['on'+k] = v; //兼容处理好了后,假设me[onclick] = function = me.onclick=function;
}
},
//移除事件
removeEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.removeEventListener){ //对应addEventListener()方法
me.removeEventListener(k,v,false);
}else if(me.detachEvent){ //对应attachEvent()方法
me.detachEvent('on'+k,v);
}else{
me['on'+k] = null; //空对象指针
}
},
//停止事件,取消事件冒泡传递
stop:function(evt){
evt = evt||window.event;
//stopPropagation()方法,阻止分派到其他节点
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
}
}
相关文章
- PHPStudy后门事件分析
- 屏蔽响应事件继续向父视图传递的category
- javascript里阻止事件冒泡
- 深入理解javascript事件
- 微信小程序开发(三)点击事件
- Echarts学习记录——如何给x轴文字标签添加事件
- fastadmin如何绑定开关按钮切换事件
- 《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件
- zepto的tap事件的点透问题的几种解决方案
- 【STM32F429】第17章 ThreadX事件标志组
- SAP Spartacus B2B ListComponent响应回车事件的实现
- Unity技术-GameFramework文档系列(四)- 事件订阅
- Qt自定义事件
- Qt中的消息通知和事件发送
- 从源码分析DEARGUI之键盘鼠标事件监控
- monkey源代码分析之事件注入方法变化
- Js 冒泡事件阻止
- OPENCV的GUI特性:鼠标事件笔记
- JS DOM事件(常用消息、常用事件、addEventListener、removeEventListener)