DOM事件探秘篇
1.事件流
时间流--- 描述的是从页面中接受事件的顺序。
(1)事件冒泡流。
事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。
(2)事件捕获流。
不太具体的节点应该更早接受到事件,而最具体的节点最后接受到事件。
2.JS事件探索
1.HTML事件处理程序 -- 直接写在html标签里面的js触发语句。
2.DOM0级事件处理程序。
把一个函数赋值给一个事件的处理程序属性,用的比较多的方法,简单,跨浏览器的优势。
3.DOM2级事件处理程序。
(1)用于处理制定和删除事件处理程序的操作。
addEventListener(处理的事件名,事件处理程序的函数,布尔值) removeEventListner()。
4.IE事件处理程序。
attachEvent(事件处理程序的名称,事件处理程序的函数) detachEvent()
不需要添加第三个参数:IE8以及更早的浏览器版本只支持事件冒泡。
var eventUtil = { addHandler:function(element,type,handler){ if(element。addEventListener){ element。addEventListener(type,handler,false); }else if(element。attachEvent){ element。attachEvent(‘on' + type,handler) ; }else{ element【‘on' + type】= handler; } } removeHandler:function(element,type,handler){ if(element。removeEventListner){ element。removeEventListner(type,handler); }else if(element。detachEvent){ element。detachEvent(‘on' + type,handler) ; }else{ element【‘on' + type】 = handler ; } } }
3.事件对象
在触发DOM上的事件时会产生一个对象,事件对象event。
(1)DOM中的事件对象。
1.type属性 用于获取事件类型。
2.target属性 用于获取事件目标。
3.stopPropagation()方法 用于阻止事件冒泡。
4.preventDefault()方法 阻止事件的默认行为。
(2)IE中的事件对象。
1.type属性 用于获取事件类型。
2.srcElement属性 用于获取事件的目标。
3.cancelBubble属性 用于阻止事件冒泡。 设置true 表示阻止冒泡 设置false 表示不阻止冒泡。
4.returnValue属性 用于阻止事件的默认行为。设置false表示阻止事件的默认行为。