DOM事件學習
學習慕課的DOM事件探祕課程做的筆記。
事件流::描述的是從頁面中接受事件的順序:
1.事件冒泡流:IE的事件流,事件最開始由事件最具體的元素,然後逐級向上傳播事件。
2.事件捕獲流:跟冒泡相反。不太具體的節點應該更早接收到事件。
推薦使用事件冒泡。
使用事件處理程序
- HTML事件,直接寫在html中的事件。缺點是HTML和JS混合在一起了,不好維護。
- DOM0級處理程序。把一個函數賦值給一個事件的處理程序。先把元素取出來,然後obj.onclick = function(){}。寫οnclick=null就可以取消綁定。
- DOM2級事件處理程序。addEventListener 和removeEventListener。一共三個函數,要處理的事件名,作爲事件處理程序的函數,布爾值(一般爲false(冒泡))。刪除監聽器用removeEventListener,參數必須和add的時候一致,注意不可以用0級的方式取消監聽。且IE不能用DOM2級事件處理
IE事件處理程序(chrome不兼容)
attachEvent()添加事件
detachEvent()刪除事件,只需要兩個參數,事件的名字需要加上on,比如onclick!!!。默認使用事件冒泡。
跨瀏覽器的事件處理程序
注意:js中所有用.(點)的都可以用“[]”(中括號)來代替。
比如lelement.onclick可以用element[‘onclick’]
跨瀏覽器的事件處理解決辦法:
事件對象
target
獲取事件的目標type
事件的類型nodeName
節點stopPropagation()
阻止冒泡事件- preventDefault()阻止事件的默認行爲,比如
<a>
有鏈接的默認行爲。