dom0 事件的特點(diǎn):
1. dom0 事件就是直接通過 onclick 綁定到 html上的事件
??? <input onclick="xx"/>
???? 或者
???? input.onclick = function(){? ...? }
2. 清理dom0 事件時(shí)秽浇,只需給該事件賦值為 null
??? input.onclick = null
3. 同一個(gè)元素的同一種事件只能綁定一個(gè)函數(shù)浮庐,否則后面的函數(shù)會覆蓋之前的函數(shù)
4. 不存在兼容性問題
dom2 事件的特點(diǎn):
1. dom2 事件是通過 addEventListener 綁定的事件
2.同一個(gè)元素的同種事件可以綁定多個(gè)函數(shù),按照綁定順序執(zhí)行
? function a() {?? ...?? }
? function b() {?? ...?? }
?? input.addEventListener( "click" ,a)
??? input.addEventListener( "click" ,b)
3.清除 dom2 事件時(shí)柬焕,使用 removeEventListener
???? input.removeEventListener( "click" ,a)
?dom2 級事件有三個(gè)參數(shù): 第一個(gè)參數(shù)是事件名(如click)审残;
??????????? 第二個(gè)參數(shù)是事件處理程序函數(shù);
??????????? ?? 第三個(gè)參數(shù)如果是true則表示在捕獲階段調(diào)用斑举,為false表示在冒泡階段調(diào)用搅轿。
addEventListener():可以為元素添加多個(gè)事件處理程序,觸發(fā)時(shí)會按照添加順序依次調(diào)用富玷。
removeEventListener():不能移除匿名添加的函數(shù)璧坟。
DOM2 包含3個(gè)事件:事件捕獲階段既穆、處于目標(biāo)階段和事件冒泡階段
? ? <span>
???????????? <a>? </a>
??? </span>
點(diǎn)擊a后capturing(捕捉)階段事件傳播會從document-> span->a,然后發(fā)生在a沸柔,最后bubbling(冒泡)階段事件傳播會從a->span->document
事件冒泡和事件捕獲
??????? DOM2級事件處理添加進(jìn)去的事件循衰,我們可以控制事件的冒泡或是捕獲過程。當(dāng)addEventListener方法的第三個(gè)參數(shù)為true時(shí)褐澎,表示只進(jìn)行事件捕獲会钝,不執(zhí)行事件冒泡,再捕獲的過程中工三,觸發(fā)途徑標(biāo)簽的對應(yīng)事件函數(shù)迁酸。當(dāng)?shù)谌齻€(gè)參數(shù)為false,表示執(zhí)行事件冒泡的過程(默認(rèn)情況)
DOM3級事件
?????? DOM3級事件在DOM2級事件的基礎(chǔ)上添加了更多的事件類型俭正,全部類型如下:
?????? UI事件奸鬓,當(dāng)用戶與頁面上的元素交互時(shí)觸發(fā),如:load掸读、scroll
?????? 焦點(diǎn)事件串远,當(dāng)元素獲得或失去焦點(diǎn)時(shí)觸發(fā),如:blur儿惫、focus
?????? 鼠標(biāo)事件澡罚,當(dāng)用戶通過鼠標(biāo)在頁面執(zhí)行操作時(shí)觸發(fā)如:dbclick、mouseup
?????? 滾輪事件肾请,當(dāng)使用鼠標(biāo)滾輪或類似設(shè)備時(shí)觸發(fā)留搔,如:mousewheel
?????? 文本事件,當(dāng)在文檔中輸入文本時(shí)觸發(fā)铛铁,如:textInput
??????? 鍵盤事件隔显,當(dāng)用戶通過鍵盤在頁面上執(zhí)行操作時(shí)觸發(fā),如:keydown饵逐、keypress
??????? 合成事件括眠,當(dāng)為IME(輸入法編輯器)輸入字符時(shí)觸發(fā),如:compositionstart
??????? 變動事件梳毙,當(dāng)?shù)讓覦OM結(jié)構(gòu)發(fā)生變化時(shí)觸發(fā)哺窄,如:DOMsubtreeModified
???????? 同時(shí)DOM3級事件也允許使用者自定義一些事件。
注意:
1)账锹、cancelBubble可以取消事件冒泡萌业;
2)、stopPropagation可以取消事件冒泡和下沉