javascript 事件机制

1.事件冒泡  从具体的到最不具体的,从节点最深的到document

2.事件流  和事件的冒泡完全相反,

3.HTML事件

<input type="button" value='按钮' οnclick="alert('hello')"/>

4.DOM0事件

<input type="button" value='按钮' id="btn1"/>

var btn1 = document.getElementById("btn1'')

添加事件:btn1.onclick = fun;

移除事件:btn1.onclick = null;

5.DOM2事件

<input type="button" value='按钮' id="btn1"/>

var btn1 = document.getElementById("btn1'')

添加:btn1.addEventListener("click",fun,false);

移除:btn1.removeEventListener("click",fun,false);

1.addEventListener(type,handler,boolean)

  removeEventListener(type,handler,boolean)

上面两个中type不需要on

btn1.attachEvent("onclick",fun);

btn1.detachEvent("onclick",fun);

2.attachEvent(type,handler)

detachEvent(type,handler)

上面两个需要on

6.Event 

function show(e){

e = e || window.event;//window.event是在ie早期版本中使用的这样就可以得到一个兼容的event

type    事件类型

target 事件的目标

preventDefault(); 阻止默认事件的发生

stopPropagation() 停止冒泡

以上方法在早期的ie中是不能使用的,

type 事件类型

srcElement 事件目标

returnValue = false 当为false的时候表示阻止默认事件的发生,为ture时不阻止

cancelBubble = true 表示阻止冒泡,

 

7.兼容的事件处理(仿jQuery)

var Util={

//添加事件

addEvent:function(target,type,handler){

if(target.addEventListener){

target.addEventListener(type,handler,false);

}else if(target.attachEvent){

target.attachEvent("on"+type,handler);

}else{

target["on"+type] = handler;

}

},

//移除事件,这里移除的只能是通过上面的方式添加的事件

removeEvent:function(target,type,handler){

if(target.removeEventListener){

target.removeEventListener(type,handler,false);

}else if(target.detachEvent){

target.detachEvent("on"+type,handler);

}else{

target["on"+type] = null;

}

}

// 阻止冒泡

stopBubble:function(e){

e = e|| window.event;

if(e.stopPropagation){

e.stopPropagation();

}else if(e.cancelBubble){

e.cancelBubble = true;

}

}

//阻止默认事件

stopDefault:function(e){

e = e || window.event;

if(e.preventDefault){

e.preventDefault();

}else if(e.returnValue){

e.returnValue = false;

}

}

// 得到触发事件的源

getScrElement:function(e){

e = e||window.event;

if(e.target){

return e.target;

}else  if(e.srcElement){

return e.srcElement;

}else{

reutrn null;

}

}

 

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值