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事件机制兼容【详细整理】就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。