兼容绑定事件的3种方法

一、直接绑定(不利于UI和代码分离,event详见后面)

<input type="button" οnclick="doEventThing(event)">    

二、DOM事件句柄

document.getElementById("divid").onclick = function(){}; 

三、侦听函数

var tb = document.getelementbyid("tab1"); 
if(window.event==null){// 只有ie下,event是window的对象属性,注意两个侦听函数的区别.该方法只能在没定义event才行
td.attachEvent('onclick', function(){alert('21');}); 
td.attachEvent('onclick', function(){alert('21');})
}
else { // mozilla, netscape, firefox,w3c
td.addEventListener('click', alert('11'), false); 
td.addEventListener('click', alert('12'), false); 
}  


下面是比较安全点的写法:

var tb = document.getelementbyid("tab1"); 
if(window.attachEvent){// 判断这个方法是否存在
td.attachEvent('onclick', function(){alert('21');}); 
td.attachEvent('onclick', function(){alert('21');})
}
else { // mozilla, netscape, firefox,w3c
td.addEventListener('click', alert('11'), false); 
td.addEventListener('click', alert('12'), false); 
}  



补充:

1、event对象记录当前发生的事件状态,因此它会在有事件发生时自动创建,最初没事件它是undefined。ie下比较特别,因为它作为window的对象属性,直接就创建了,初始值为null。

  document.writeln(event);          //ie输出null,非ie输出undefined

2、说明一下addEventListener()的第三个参数useCapture,表示事件流顺序:

<html>
<body>
<div id="test1">

 <input type="button" id="btn_test" value="se4.cn技术基地" />
 
 </div> 
 
<script>

window.οnlοad=function(){ 
	 document.getElementById("test1").addEventListener("click",test1,false);
	 document.getElementById("test2").addEventListener("click",test2,false); }
	 
 	 function test1(){ alert("外层div触发") }
  	 function test2(){ alert("内层input触发") }  
</script>

</body>
</html>

如果把第三个参数 useCapture设置为true表示采用捕捉顺序;设为false,表示采用冒泡顺序执行。

如果设置useCapture=true,单击button,则先发生test1(),后发生test2();所以建议使用false。

3、移除事件是个好习惯,避免内存泄漏

removeEventListener("click",test2,true); 

document.detachEvent("onclick",test2); 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值