javaScript事件机制兼容【整理】
【添加事件机制】 addEventListener 和 attachEvent
[W3C]
addEventListener('click' , function(){alert('Hello World')} ,false ) //W3C规范添加事件(IE8及以上不兼容); 第一个参数为事件类型 ,第二个为事件程序 ,第三个 false为事件冒泡,true为事件捕获
[IE]
attachEvent('onclick',function(){alert('Hello World')}) //IE添加事件; 第一个参数为事件类型(需要加on) ; 第二个为事件程序 ; 因为IE只支持事件冒泡,所以只有两个参数
[跨浏览器兼容]
function insertEvent(obj,Event,fun){
if(obj.addEvenListener){
addEventLitener(Event,fun,false)
}else if(obj.attach){
attachEvent('on'+Event,fun)
}
}
------------------------------------------------------------------------------------------
【删除事件机制】 removeEventListener detachEvent
[W3C] removeEventListener
removeEventListener() //利用addEventListener新增的事件只能通过removeEventListener来删除;
[注意] //以下这种删除事件方式是错误的,因为事件程序必须不能是一个匿名函数
addEventListener('click' , function(){alert('Hello World')} ,false )
removeEventListener('click',function(){alert('Hello World')},false)
[解决]
addEventListener('click' , box ,false );
removeEventListener('click',box,false) ;
function box(){
alert('Hello World');
}
[跨浏览器兼容]
function deleteEvent(obj,Event,fun){
if(obj.removeEventListener){
removeEventListener(Event,fun,false);
}else if(obj.detachEvent){
detachEvent('on'+Event,fun)
}
}
-------------------------------------------------------------------------------------------------
【阻止特定事件的默认行为】
[preventDefault 和returnValue]
[W3C] preventDefault
[IE] reutrnValue
[跨浏览器兼容]
function(event){
event=event || window.event;
if(event.preventDefault){
event.preventDefault()
}else{
event.returnValue=false;
}
}
---------------------------------------------------------------------------------------------------
【获取目标对象】
[target 和 srcElement]
function(event){
event=event || window.event;
if(event.target){
return event.target;
}else if(event.srcElement){
return event.srcElement;
}
}
javaScript事件机制兼容【整理】的更多相关文章
- 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)
前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...
- 重温javascript事件机制
以前用过一段时间的jquery感觉太方便,太强大了,各种动画效果,dom事件.创建节点.遍历.控件及UI库,应有尽有:开发文档也很多,网上讨论的问题更是甚多,种种迹象表明jquery是一个出色的jav ...
- Javascript事件机制兼容性解决方案
本文的解决方案可以用于Javascript native对象和宿主对象(dom元素),通过以下的方式来绑定和触发事件: 或者 var input = document.getElementsByTag ...
- 【探讨】javascript事件机制底层实现原理
前言 又到了扯淡时间了,我最近在思考javascript事件机制底层的实现,但是暂时没有勇气去看chrome源码,所以今天我来猜测一把 我们今天来猜一猜,探讨探讨,javascript底层事件机制是如 ...
- JavaScript事件机制——细思极恐
JavaScript事件机制,也有让人深思的东西.在一开始未深入了解,我头脑里有几个问题发出: 1. 自下而上(冒泡)事件怎么写,自上而下(捕获)又是怎么写? 2. 捕获型和冒泡型同时设置,谁生效? ...
- [解惑]JavaScript事件机制
群里童鞋问到关于事件传播的一个问题:“事件捕获的时候,阻止冒泡,事件到达目标之后,还会冒泡吗?”. 初学 JS 的童鞋经常会有诸多疑问,我在很多 QQ 群也混了好几年了,耳濡目染也也收获了不少,以后会 ...
- 总结JavaScript事件机制
JavaScript事件模型 在各种浏览器中存在三种事件模型: 原始事件模型 , DOM2事件模型 , IE事件模型. 其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE ...
- JavaScript——事件机制
事件是将JavaScript脚本与网页联系在一起的主要方式,是JavaScript中最重要的主题之一,深入理解事件的工作机制以及它们对性能的影响至关重要.本文将详细介绍JavaScript的事件机制, ...
- javascript事件机制
① javascript绑定事件的方式 http://blog.iderzheng.com/dom-javascript-event-binding-comparison/ ② javascript事 ...
随机推荐
- c#字符串方法
作者: 常浩 staticvoid Main(string[] args) { string s =""; //(1)字符访问(下标访问s[i]) s ="ABCD&qu ...
- hdu3714 三分
Error Curves Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- C++新式类型转换
C++的四种强制类型转换,所以C++不是类型安全的.分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast 新类型的强制转换可以提 ...
- tttt
while(scanf("%d",&n)!=EOF) { res=-1; level(tmp,n,res,1); printf("%d/n",res); ...
- tomcat重启或关闭后,上传文件消失 .
tomcat重启或关闭后,上传文件消失的问题,是因为在断电前myeclipse是启动的,断电时造成myeclipse异常关闭,再重新启动myeclipse时会重新发布项目,把先前发布的项目给覆盖了,所 ...
- 【译】神经网络与深度学习 Ch1-Section0
用神经网络识别手写数字 人类的视觉系统是是大自然的奇迹.考虑下面手写数字序列: 大多数人能够轻易地是识别出是504192.在我们大脑的每个半球都有一个基础的皮质,这就是我们熟知的V1区,它包含了14亿 ...
- javascript区分电脑与手机登陆
<script language="javascript"> function checkMobile() { var pda_user_agent_list = ne ...
- 鼠标悬停移除更换class
$("#xinl").mouseover(function() //鼠标悬停执行函数 { $(".xl").removeClass().addClass(&q ...
- 选址问题lingo求解
大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang model : sets : H/h1..h2/:x , y , e ; L/l1..l6/: a ...
- BZOJ 1036 [ZJOI2008]树的统计Count(动态树)
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1036 题意:一棵树,每个节点有一个权值.三种操作:(1)修改某个节点的权值:(2)输出某两 ...