<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>跨浏览器事件处理程序</title> </head> <body> <input type="button" value="按钮" id="btn"> <script type="text/javascript"> function showMes(){ alert("hello!"); } var btn=document.getElementById("btn"); var eventUtil={ //添加句柄 addHandler:function(element,type,handler){ if(element.addEventListener){ //DOM 2级判断 element.addEventListener(type,handler,false); } else if(element.attachEvent){ //IE事件处理程序判断 element.attachEvent('on'+type,handler); } else{ HTML事件处理程序 element['on'+type]=handler; //element.onclick===element['onclick'] } }, //删除句柄 removeHandler:function(element,type,handler){ if(element.removeEventListener){ //DOM 2级判断 element.removeEventListener(type,handler,false); } else if(element.detachEvent){ //IE事件处理程序判断 element.detachEvent('on'+type,handler); } else{ HTML事件处理程序 element['on'+type]=null; } } } eventUtil.addHandler(btn,'click',showMes); // eventUtil.removeHandler(btn,'click',showMes); </script> </body> </html>
换而言之,element.addEventListner的返回值是布尔类型咯?
同问,就是if(element.addEventListner)这样的书写格式!在哪里有讲到.表达什么意思.虽然知道在这个程序是指如果支持element.addEventListner就执行后面的程序,
主要作用就是为了代码能够适应不同的浏览器,在这个句柄中我们看到有三个判断:
if(element.addEventListener){}
else if(element.attachEvent){}
else{}
就是为了后面代码调用function(element,type,handler){}这个函数时候,能够让调用的代码产生作用,如果我们不用句柄,很可能就是调用的代码在不同的浏览器有的有效果有的却没效果(这三条语句就保证了在所有浏览器都能正确执行我们所调用的代码) 。前面两个是dom2级的,最后一个是dom0级的,没有什么浏览器不能响应0级的。 写两个dom2级是因为在ie浏览器中不能够响应 element.addEventListener 这样的写法,她只响应element.attachEvent这样的写法。 句柄就是个官方名字吧,我们把这样的操作称之为添加句柄,理解一下就行了。