标签:style blog http io color ar os 使用 sp
今天学习了js的事件处理程序,IE与FF,chrome,safari,opera的处理事件方法不同,FF,chrome,safari,opera支持addEventLisener,而addEventListener是属于DOM2定义的函数,IE不支持DOM2,因此要想实现跨浏览器的事件处理,需要针对IE与FF,chrome,safari,opera进行不一样的处理。
1、事件流
首先要记录的就是事件流了,事件流有三个阶段,事件捕获阶段、处于目标阶段和事件冒泡阶段。处于目标阶段,其事件处理中被看成冒泡阶段的一部分。
DOM0级事件处理程序,直接对元素赋一个事件处理程序属性,如:
var btn = document.getElementById("btn");
btn.onclick=handler;
DOM2级事件处理程序,使用addEventListener和removeEventListener,如对ele绑定click事件:
ele.addEventListener("click",handler,false); //当第三个参数为false,表示冒泡阶段,当为true,表示事件捕获阶段;
2、IE的事件处理程序
IE不支持addEventListener,但可以用attachEvent和detachEvent处理事件,如对ele绑定click事件:
ele.attachEvent("onclick",handler);
注意:是onclick,而不是click;使用attachEvent,其处理事件的函数里的this为全局对象,即this==window。
可以验证下:
3、event,事件对象处理程序都会接受一个event对象
addEventListener处理事件中接收的event,常用的属性:
target:目标元素
currentTarget:当前目标元素
preventDefault():阻止默认行为
stopPropagation():阻止事件的传播
type:事件类型
attachEvent处理事件中接收的event,常用属性:
srcElement:目标元素
returnValue:当为false,阻止默认行为;默认为true
cancelBubble:当为true,阻止事件的传播;默认为false
type:事件类型
针对IE与非IE的事件处理不同,封装成一个跨浏览器的事件处理:
标签:style blog http io color ar os 使用 sp
原文地址:http://www.cnblogs.com/wmmang-blog/p/4072207.html