事件绑定和普通事件的区别
普通事件绑定多个方法,方法会覆盖,只会执行最后绑定的方法;
事件绑定addEvenetListener
不会被覆盖,并且可以捕获事件的触发阶段,也能使用removeEventListener
来取消事件绑定,但是不兼容低版本浏览器
在IE中事件绑定和取消使用的是attachEvent
与detachEvent
,并且事件中的this指的是widow,并非元素的本身IE和DOM事件流的区别
事件流:指的是页面中接收事件的顺序
而IE团队提出的事件流顺序与Netscape团队提出的顺序完全相反
IE事件流指的是事件冒泡流,所以IE8以下的版本只支持事件冒泡;
Netscape团队指的是事件捕获流最后DOM2级事件规定:事件流包含3个阶段:捕获阶段,目标阶段,冒泡阶段;
事件对象,DOM事件对象与IE事件对象
在DOM上发生某个事件的时候,就会产生一个时间对象event,这个对象中包含所有与事件有关的信息,包括产生事件元素的信息、事件类型等等;所有的浏览器都支持时间对象,但是支持的方式不同
DOM事件对象: 事件函数中的第一个参数;
IE事件对象:并不是函数中的第一个参数,是window下面的一个属性:window.event
事件对象下面包含它的特定的事件有关的属性和方法;
var ev = ev || window.event;
常用的属性有:
ev.bubbles : 是否是冒泡
ev.currentTarfet : 事件绑定的那个元素
ev.type :事件名称
ev.target || ev.srcElement(IE) : 事件触发的目标元素
*常用的方法有*
ev.preventDefault() || ev.returnValue(IE) : 取消事件默认行为,比如右击鼠标会有对话框,但是只有在cabcelable为true的事件才能使用该方法
ev.stopPropagation () || ev.cancelBubble(IE) : 切断进程,即取消下一步的捕获或者冒泡