一、事件的概念
什么是Event事件
浏览器与用户进行交互的时候会触发各种事件,事件在文档或者浏览器窗口中发生,指用户或浏览器自身执行的某种动作.是javascript与DOM之间的交互的桥梁。
二、事件流
事件流是描述从页面中接收事件的顺序
按照执行的顺序,我们主要有事件冒泡和事件捕获两种形式
DOM标准规定事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段
1、事件冒泡
事件冒泡可以形象比喻为把一颗石头投入水中,泡泡会一直从水底冒出水面,事件会从最内层的元素开始发生,一直向上传播,直到document对象,
事件开始时由最具体的元素开始发生,一直向上传播,逐级向上。
2、阻止事件冒泡
阻止事件冒泡用到了event对象的一个属性event.stopPropagation()
’
阻止事件冒泡:event.stopPropagation()
3、事件捕捉
与事件冒泡正好相反,从最外层逐级向内捕获事件。事件的捕获是从最不特定的事件目标到最特定的事件目标。即从DOM树的根到叶子。
三、DOM
1、DOM0级事件处理程序
分为2个:一是在标签内写onclick事件
二是在js代码中写 对象.onlicke=function(){}
函数
1级DOM–(为什么没有1级DOM)
DOM级别1于1998年10月1日成为W3C推荐标准。1级DOM标准中并没有定义事件相关的内容,所以没有所谓的1级DOM事件模型。在2级DOM中除了定义了一些DOM相关的操作之外还定义了一个事件模型 ,这个标准下的事件模型就是我们所说的2级DOM事件模型
2、DOM2级事件处理程序
DOM2级事件绑定
DOM2级事件定义了两个方法,用于处理指定和删除事件处理程序的操作:
addEventListener()
和removeEventListener()
。
函数均有3个参数,
第一个参数是要处理的事件名(不带on前缀的才是事件名)
第二个参数是作为事件处理程序的函数
第三个参数是一个boolean值,默认false表示使用冒泡机制,true表示捕获机制。
使用DOM2级事件处理程序的主要好处是可以添加多个事件处理程序。事件处理程序会按照它们的顺序触发。
注意:
通过addEventListener()添加的事件处理程序只能使用removeEventListener()来移除,移除时传入的参数与添加时使用的参数相同。这也意味着通过addEventListener()添加的匿名函数将无法移除。
3、IE事件处理程序
IE8及以下版本浏览器实现了与DOM中类似的两个方法:attachEvent()和detachEvent()。
使用方法跟上面类似。