javascript事件機制搞不清楚

兩種,冒泡和捕獲,不對是捕獲和冒泡。chrome

document.body.addEventListener("click",function(){console.log("1")},true);
    document.body.addEventListener("click",function(){console.log("4")},false);
    document.querySelector("header").addEventListener("click",function(){console.log("2")},true);
    document.querySelector("header").addEventListener("click",function(){console.log("3")},false);

說明:函數

  1. 先不關注捕獲仍是冒泡。事件激活後是先進行捕獲,而後把函數都進行註冊,好比一個元素綁定了多個click事件。
  2. 而後判斷addEventListener的第三個參數,ture表示捕獲,false表示冒泡;
  3. 上面的body,header元素綁定了四個事件,ture優於false執行(兩個都有,捕獲事件優於冒泡),捕獲是從body往header(從外到內,對於都是true而言),冒泡是從header往body(從裏到外,對於都是false而言)
  4. 阻止捕獲或者冒泡,拋開這兩個東西,也就是阻止事件傳播。打開chrome控制檯,執行console.dir(window.Event.prototype),關注裏面的四個方法initEvent、preventDefault、stopImmediatePropagation、stopPropagation,第一個初始化事件方法,第二個阻止默認行爲,第三個百度一下,第四個stop:中止,propagation:傳播。
  5. target、currenttarget,斷定當前元素,綁或解或跳過
相關文章
相關標籤/搜索