事件 P346页
事件流:从页面接收事件的顺序
1、事件冒泡:IE的事件流,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。
2、事件捕获:Netscape Communicator团队提出的另一种事件流。与事件冒泡方向相反。
3、DOM事件流
‘DOM2级事件’规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。
事件处理程序
事件处理程序的名字以‘on’开头
1、HTML事件处理程序 含‘on’
2、DOM0级事件处理程序 含‘on’
3、DOM2级事件处理程序:addEventListener()、removeEventListener()
接受三个参数:要处理的事件名、作为事件处理程序的函数、一个布尔值
其中布尔值参数为true,表示在捕获阶段调用事件处理程序;若为false,表示冒泡阶段调用事件处理程序。
4、IE事件处理程序:attachEvent()、detachEvent()
接受两个参数:事件处理程序名称、事件处理程序函数 含‘on’
attachEvent()方法和addEventListener()方法类似,可以为一个元素添加多个事件处理程序。但是触发事件的顺序相反
5、跨浏览器的事件处理程序*** addHandler() removeHandler() 。。。。 详见P354页、P361页、P373页、P374页、
EventUtil的用法如下:
var EventUtil={
addHandler:function (element,type,handler) {
if(element.addEventListener){
element.addEventListener(type,handler,false)
}else if(div.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(div.detachEvent){
element.detachEvent('on'+type,handler)
}else {
element['on'+type]=null;
}
},
getEvent:function (event) {
return event?event:event.srcElement;
},
getTarget:function (event) {
return event.target||event.srcElement;
},
getRelatedTarget:function (event) {
if(event.relatedTarget){
return event.relatedTarget;
}else if(event.toElement){
return event.toElement;
}else if(event.fromElement){
return event.fromElement;
}else {
return null;
}
},
getButton:function (event) {
if(document.implementation.hasFeature('MouseEvent','2.0')){
return event.button;
}else {
switch (event.button){
case 0:
case 1:
case 3:
case 5:
case 7:
return 0;
case 2:
case 6:
return 2;
case 4:
return 1;
}
}
}
};
事件对象
1、DOM中的事件对象 详见P355页。
2、IE中的事件对象 详见P359页。
3、跨浏览器的事件对象 详见P361页。getEvent getTarget preventDefault

浙公网安备 33010602011771号