JS监听事件attachEvent和addEventListener

本文链接:http://www.ctanime.com/?p=744

有时候当某一对象的某一事件被触发时,它所要执行的程序可能是一大串,有可能是要呼叫某一函数,也有可能同时又要呼叫另一函数.这时候我们就需要JS的监听事件。

document.getElementById(“btn”).onclick = method1;      

document.getElementById(“btn”).onclick = method2;      

document.getElementById(“btn”).onclick = method3; 

如果这样写,那么将会只有medhot3被执行

在IE中使用addachEvent 

var btn1Obj = document.getElementById(“btn1″);      

//object.attachEvent(event,function);      

btn1Obj.attachEvent(“onclick”,method1);      

btn1Obj.attachEvent(“onclick”,method2);      

btn1Obj.attachEvent(“onclick”,method3);    

执行顺序为method3->method2->method1

Mozilla系列中需要使用 addEventListener

var btn1Obj = document.getElementById(“btn1″);      

//element.addEventListener(type,listener,useCapture);      

btn1Obj.addEventListener(“click”,method1,false);      

btn1Obj.addEventListener(“click”,method2,false);      

btn1Obj.addEventListener(“click”,method3,false);   

执行顺序为method1->method2->method3

看看gmail的代码

var Ka=navigator.userAgent.toLowerCase();      

var rt=Ka.indexOf(“opera”)!=-1;      

var r=Ka.indexOf(“msie”)!=-1&&(document.all&&!rt);          

function Zl(a,b,c){     

      if(r)    {     

       a.attachEvent(“on”+b,c);     

   }   else    {     

       a.addEventListener(b,c,false);     

   }     

}    

看一个例子:

<p id=”para” title=”demo!”>点这里</p>
<script>
function test(){
alert(“test”);
}

function pig(){
alert(“pig”);
}

function addListener(element,e,fn){
     if(element.addEventListener){
          element.addEventListener(e,fn,false);
     } else {
          element.attachEvent(“on” + e,fn);
     }
}

window.onload = function(){
         var element = document.getElementById(“para”);
         addListener(element,”click”,test);
         addListener(element,”click”,pig);
}
</script>

5 Comments

  1. 济南拼客 says:

    好网站,不错的网站

  2. 真钱游戏 says:

    不错,写的太棒了。。

  3. 旗杆 says:

    很不错的博客 内容很丰富 也希望博主能够回访 大家彼此交流一下

  4. airmax95 says:

    很复杂的程序代码,太专业了,看不懂

  5. Chinnachick says:

    I enjoyed reading your blog. Keep it that way.

Leave a comment