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