事件流描述的是从页面中接受事件的顺序。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流1、事件冒泡事件冒泡,即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上转播至最不具体的节点(文档)。2、事件捕获事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。
1、HTML事件处理程序:事件直接写在html标签里。2、DOM0级事件处理程序:就是把一个函数赋值给一个事件的处理程序属性。较传统的一种方式,用的也比较多,而且简单又跨浏览器。同一个事件可以加多次。3、DOM2级事件处理程序DOM2级事件定义了两个方法:用于处理指定和删除事件处理程序的操作:addEventListener()和removeEventListener()。它们都接收三个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值[true表示事件捕获,false表示事件冒泡,一般都设置为false从而兼容各种浏览器]。同一个事件可以加多次。上图演示代码在IE浏览器不支持。4、IE事件处理程序attachEvent()添加事件detachEvent()删除事件这两个方法接收相同的两个参数:事件处理程序名称与事件处理函数,不使用第3个参数的原因:IE8以及更早的IE浏览器只支持事件冒泡。以上演示代码非IE浏览器不支持5、跨浏览器的事件处理程序
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.removeEventListener){element.removeEventListener(type,handler,false);}else if(element.detachEvent){element.detachEvent('on'+type,handler);}else{element['on'+type]=null;}},getEvent:function(event){return event?event:window.event;},getType:function(event){return event.type;},getElement:function(event){return event.target || event.srcElement;},preventDefault:function(event){//比如取消<a>默认超链接功能if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}},stopPropagation:function(event){//不触发父节点的事件if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}}}
联系客服