js事件模型、代理及委托

1、事件的三个阶段:捕获、目标、冒泡(低版本的IE不支持捕获阶段)
2、传统、IE、W3C的绑定、解绑等事件略有不同
3、addEventListener()的第三个参数的值:false (冒泡执行) , true (捕获执行),默认为false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function Event(){
this.addHander = function(ele,type,fn){
if(document.addEventListener){//ie9、ff、sa、op、ch
ele.addEventListener(type,fn,false)
}else if(document.attachEvent){//ie、op
ele.attachEvent('on'+type,fn)
}else{//传统
ele['on'+type] = fn;
}
}
this.delHander = function(ele,type,fn){
if(document.removeEventListener){
ele.removeEventListener(type,fn,false)
}else if(document.detachEvent){
ele.detachEvent('on'+type,fn)
}else{
ele['on'+type] = null;
}
}
this.getEvent = function(event){
return event ? event:window.event;
}
this.getTarget = function(event){
return event.target || event.srcElement;
}
this.preventDefault = function(event){
if(event.preventDefault){
event.preventDefault();
}else{
event.returnValue = false;
}
}
this.stopPropagation = function(event){
if(event.stopPropagation){
event.stopPropagation()
}else{
event.cancelBubble = false;
}
}
}

文章目录