跨浏览器的事件对象介绍
2023-06-13 09:14:34 时间
vareventUtil={
getEvent:function(event){
returnevent?event:window.event;
};
getTarget:function(event){
returnevent.target||event.srcElement;
};
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue=false;
}
};
stopPropagation:function(event){
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
};
};
当使用一个DOM兼容的浏览器时,event变量仅仅是传入并被返回,在IE中event参数将是undefined,因此window.event将会被返回,所以采用eventUtil.getEvent()方法无论在dom还是IE上event返回值都是可用的。
同理第二个方法,getTarge()方法,先检测event对象的target属性,如果存在,则返回targe,若为IE浏览器则返回srcElement属性。保证兼容性。
btn.onclick=function(event){
event=EventUtil.getEvent(event);
vartarget=EventUtil.getTarget(event);
};
第三个方法,preventDefault()方法,当event对象传入时,先检测event对象的preventDefault()方法是否可用,若可用则调用preventDefault方法,若不可用将event的returnValue设置为false。
例如:
varlink=document.getElementById("myLink");
link.onclick=function(event){
event=EventUtil.getEvent(event);
EventUtil.preventDefault(event);
};
这段代码阻止了一个link标签的默认行为,event对象来自于EventUtil的getEvent方法的返回值并作为preventDefault()方法的传入参数。
第四个方法stopPropagation(),用同样的方法,首先尝试DOM方法,之后尝试cancelBubble属性,例如下面的代码:
varbtn=document.getElementById("myBtn");
btn.onclick=function(event){
alert("Clicked");
event=EventUtil.getEvent(event);
EventUtil.stopPropagation(event);
};
document.body.onclick=function(event){
alert("Bodyclicked");
};
记得这个方法可能阻止事件在浏览器的冒泡阶段或者同时阻止事件在浏览器的冒泡和捕获阶段。
相关文章
- 面试官:哪些浏览器事件不会冒泡?
- 「后端小伙伴来学前端了」Vue中全局事件总线(GlobalEventBus)原理及探究过程
- 谷歌3亿美元投资ChatGPT竞品;以色列总统用ChatGPT写演讲稿;理想将于本周三公布智能驾驶技术最新进展丨每日大事件
- H5-server-sent Event服务器发送事件
- react源码中的生命周期和事件系统_2023-02-06
- Oracle 等待事件 cursor: mutex X 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 log buffer space 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 pipe get 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 TCP Socket (KGAS) 官方解释,作用,如何使用及优化方法
- 理解JavaScript中的事件
- javascriptKeyDown、KeyPress和KeyUp事件的区别与联系
- JqueryChange与bind事件代码
- 不同的jQueryAPI来处理不同的浏览器事件
- IE6浏览器下resize事件被执行了多次解决方法
- js修改table中Td的值(定义td的双击事件)
- js中的eventType事件及其浏览器支持性介绍
- 浏览器窗口加载和大小改变事件示例
- 浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
- 基于jquery固定于顶部的导航响应浏览器滚动条事件
- 原生JS绑定滑轮滚动事件兼容常见浏览器
- JavaScript中自定义事件用法分析
- JavaScript监听和禁用浏览器回车事件实例
- Java添加事件监听的四种方法代码实例