javascript之事件模型

事件模型

冒泡型事件(Bubbling):事件由叶子节点沿祖先节点一直向上传递到根节点

捕获型事件(Capturing):由DOM树最顶元素一直到最精确的元素,与冒泡型事件相反

DOM标准事件模型:DOM标准既支持冒泡型事件,也支持捕获型事件,可以说是两者的结合体,首先是捕获型,接着冒泡传递

事件对象

在IE浏览器中事件对象是window的一个属性,在DOM标准中,event必须作为唯一的参数传给事件处理函数

获得兼容的event 对象:

function(event){ 
	 //event 是作为DOM标准的参数传入处理函数
	event = event ?event : window.event;
}

在IE中,事件的对象包含在event的srcElement中,而在DOM标准中,对象包含在target属性中

获得兼容的event 对象指向的元素:

var target =event.srcElement ? event.srcElement : event.target ;

前提是,保证event对象已经正确的获取

事件监听器

IE下,注册的监听器逆序执行,即后面注册的先执行

element.attachEvent('onclick',observer);   //注册监听器
element.detachEvent('onclick',observer)   //移除监听器

第一个参数为事件名称,第二个为回调处理函数

DOM标准下:

element.addEventListener('click',observer,useCapture)
element.removeEventListener('click',observer,useCapture)

第一个参数为事件名称,没有“on”的前缀,第二个参数为回调处理函数,第三个参数说明回调函数是在捕获阶段调用还是冒泡阶段调用,默认true为捕获阶段

事件传递

兼容地取消浏览器的事件传递

function someHandler(event){
      event = event || window.event;
      if(event.stopPropagation)   //DOM标准
      event.stopPropagation();
      else
      event.cancelBubble = true;   //IE标准
}

取消事件传递后的默认处理

function someHandler(event){
      event = event || window.event;
      if(event.preventDefault)   //DOM标准
      event. preventDefault ();
      else
      event.returnValue = true;   //IE标准
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值