一、注冊事件
給元素添加事件粘咖,稱為注冊事件或者綁定事件蚣抗。
注冊事件有兩種方式:傳統(tǒng)方式和方法監(jiān)聽注冊方式。
1瓮下、傳統(tǒng)方式
同一個元素同一個事件只能設(shè)置一個處理函數(shù)翰铡,最后注冊的處理函數(shù)將會覆蓋前面注冊的處理函數(shù)。唯一性讽坏。
利用on開頭的事件锭魔,onclick
2、方法監(jiān)聽注冊方式 ? ?addEventListener()
IE9之前用attachEvent()代替
同一個元素同一個事件可以注冊多個監(jiān)聽器
eventTarget.addEventListener(type, listener, useCapture)
(1)將監(jiān)聽器注冊到eventTarget(目標(biāo)對象)上
(2)type:事件類型字符串路呜。比如click迷捧、mouseover,此處不需要加on
(3)listener:事件處理函數(shù)拣宰。事件發(fā)生時党涕,會調(diào)用該監(jiān)聽函數(shù)
(4)useCapture:可選參數(shù),是一個布爾值巡社。如果是true膛堤,表示在事件捕獲階段調(diào)用事件處理程序;如果是false晌该,表示在事件冒泡階段調(diào)用事件處理程序肥荔。
二、刪除事件(解綁)
1朝群、傳統(tǒng)注冊方式
eventTarget.onclick = null;
2燕耿、方法監(jiān)聽注冊方式? ? removeEventListener()
eventTarget.removeEventListener(type, listener, useCapture)
對應(yīng)的函數(shù)listener要單獨寫才能移除,不能使用匿名函數(shù)姜胖。
三誉帅、DOM事件流
四、事件對象
div.onclick = function(event){}
(1)events就是一個事件對象右莱,寫在監(jiān)聽函數(shù)的小括號里面蚜锨,當(dāng)作形參來看。
(2)事件對象只有有了事件才會存在慢蜓,它是系統(tǒng)自動創(chuàng)建的亚再,不需要傳遞參數(shù)。
(3)事件對象是事件的一系列相關(guān)數(shù)據(jù)的集合晨抡,跟事件相關(guān)氛悬。比如鼠標(biāo)點擊里面包含了鼠標(biāo)的相關(guān)信息则剃,鼠標(biāo)坐標(biāo)等,如果是鍵盤事件如捅,里面就包含鍵盤的相關(guān)信息棍现,比如鍵盤按下了哪個鍵。
(4)事件對象可以自定義名字
五伪朽、事件對象的常見屬性和方法
e.target返回觸發(fā)事件的對象轴咱,this返回綁定事件的對象
六、阻止默認(rèn)行為 ? ?preventDefault()
傳統(tǒng)注冊方式
(1)可以利用 return false烈涮,也能阻止默認(rèn)行為朴肺,并且沒有兼容性問題,但是return后面的代碼不執(zhí)行坚洽,而且僅限于傳統(tǒng)注冊方式戈稿。
(2)e.preventDefault()
(3)e.returnValue
七、阻止冒泡行為 ? ?stopPropagation()
事件冒泡:開始時由最具體的元素接收讶舰,然后逐級向上傳播到DOM最頂層節(jié)點鞍盗。也即是子元素和父元素都添加事件,觸發(fā)子元素事件跳昼,父元素也會跟著觸發(fā)般甲,這就是冒泡行為。
低版本IE使用:e.cancelBubble = true ? 阻止冒泡
八鹅颊、DOM 事件委托(代理敷存、委托)
事件委托也稱之為事件代理,在jQuery里面稱為事件委派堪伍。
1锚烦、事件委托的原理
不是給每個子節(jié)點單獨設(shè)置事件監(jiān)聽器,而是事件監(jiān)聽器設(shè)置在其父節(jié)點上帝雇,然后利用冒泡原理影響設(shè)置每個子節(jié)點涮俄。
2、事件委托的作用
只操作一次DOM尸闸,提高了程序的性能彻亲。
九、禁止選中文字吮廉、禁止右鍵菜單
1睹栖、禁止鼠標(biāo)右鍵菜單????contextmenu
contextmenu主要控制應(yīng)該何時顯示上下文菜單,主要用于程序員取消默認(rèn)的上下文菜單
document.addEventListener('contextmenu',function(e){
? ? ????e.preventDefault();?阻止默認(rèn)行為
})
2、禁止選中文字 ? ?selectstart(開始選中)
document.addEventListener('selectstart',function(e){
????????e.preventDefault();?阻止默認(rèn)行為
})
十茧痕、鼠標(biāo)事件對象
event對象代表事件的狀態(tài),是事件相關(guān)的一系列信息的集合恼除。鼠標(biāo)事件對象MouseEvent踪旷,鍵盤事件對象KeyboardEvent曼氛。
(1)clientX、clientY鼠標(biāo)在可視區(qū)的坐標(biāo)令野,頁面過長滾動下拉時舀患,只能顯示相對于可是窗口的坐標(biāo)。
(2)pageX气破、pageY鼠標(biāo)在文檔頁面的坐標(biāo)聊浅,頁面過長滾動下拉時,可以顯示相對于文檔頁面的坐標(biāo)现使。
十一低匙、鍵盤事件對象
(1)keyup和keydown事件不區(qū)分字母大小寫,大小寫得到的keycode是一樣的ASCII碼
(2)keypress區(qū)分大小寫碳锈,但是不識別功能鍵顽冶,比如ctrl、shift等
(3)鍵盤事件對象屬性keyCode ?返回該鍵的ASCII碼