事件流
所谓事件流就是从页面中接收事件的顺序。
冒泡事件
IE的事件流叫做冒泡事件,即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档)。
所有现代浏览器都支持事件冒泡,但是具体实现上有一点区别。
IE9、Firefox、Chrome和Safari则将事件一直冒泡到window对象
div→body→html→document
事件捕捉
和冒泡事件相反,他是从不具体的节点到最具体的节点传播的。
IE9、Firefox、Chrome和Safari同样支持事件捕捉。
很少有人用事件捕捉,因为DOM2级事件规范要求事件应该从document对象开始传播。
DOM事件流
首先发生的是时间的捕捉,为截取事件提供了机会,然后接受到事件,再从冒泡阶段对事件作出响应。
事件处理程序
响应某个事件的函数就叫事件处理程序或者监听器。事件处理程序的名字都以“on”开头
1. HTML事件处理程序
① 直接写进去
② 通过js页面调用
DOM0级事件处理程序
通过获取元素,独立设置点击事件
this运行环境是局部
btn.onclick=null //删除事件处理程序
DOM2级事件处理程序
IE事件处理程序
attachEvent()和detachEvent()
同样可以添加多个事件,但是他的响应的顺序是反的,即先bb再aa,同样不能移除匿名事件
可以移除事件
跨浏览器事件处理程序
事件对象
在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关信息。包括导致事件的元素、事件类型以及其他特定事件信息。所有浏览器都支持event对象。但支持的方式不同。
DOM中的事件对象
兼容DOM上的浏览器会将一个event对象传入到事件处理程序中,无论指定事件处理程序使用的什么方法,都会传入event对象。
随便举一些常用的event对象的属性和方法:
cancelable:是否可以取消事件默认行为
bubbles:表明事件是否冒泡
currentTarget:事件处理程序当前正在处理事件的那个元素
preventDefault():取消事件默认行为,cancelable必须设置为true
target:事件的目标
type:被触发的事件的类型
按钮添加了三个事件
阻止特定事件的默认行为:
阻止a链接的点击跳转行为
IE中的事件对象
与dom中的event对象不同,IE中的event对象是根据指定事件处理程序的方法来决定的。
在使用DOM0级方法添加事件时,event对象作为window对象的一个属性存在。
如果事件处理程序使用的attachEvent()添加时,event对象作为参数被传入事件处理程序函数中
跨浏览器的事件对象











网友评论