学习笔记(2)_2008-07-03_about attachEvent and addEventListener()

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



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)
        }
}
addEventListener的第三個參數介绍:
這個參數叫做useCapture,是一個boolean值,
就是true or false,如果送出true的話就是瀏覽器會使用Capture方式,
false的話是Bubbling,只有在特定狀況下才會有影響,通常建議是false,
而會有影響的情形是目標元素(target element)有祖先元素(ancestor element),
而且也有同樣的事件對應函數

一般來說,如果我在內層藍色的元素上click不只會觸發藍色元素的click事件,
還會同時觸發紅色元素的click事件,
而useCapture這個參數就是在控制這時候兩個click事件的先後順序。
如果是false,那就會使用bubbling,他是從內而外的流程,
所以會先執行藍色元素的click事件再執行紅色元素的click事件,
如果是true,那就是capture,和bubbling相反是由外而內,
會先執行紅色元素的click事件才執行藍色元素的click事件。
如果不同層的元素使用的useCapture不同呢?就是會先從最外層元素往目標元素尋找設定
為capture的事件,到達目標元素執行目標元素的事件後,再尋原路往外尋找設定為bubbling的事件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值