事件的概念:事件就是用户与浏览器交互后执行的某种动作,而响应某个事件的函数就叫做事件处理程序(事件侦听器);
HTML事件处理程序的缺点:时差问题,用户可能会在HTML元素一出现在页面上就触发响应的事件,但当时的事件处理程序有可能尚不具备执行条件,就会引发错误;
扩展事件处理程序的作用域链在不同浏览器中会导致不同结果,不同JavaScript引擎遵循的标识符解析规则略有差异,很可能会在访问非限定对象成员时出错;
Dom中的事件对象:
事件对象: 在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含所有与事件相关的信息;
event上的属性:
type: 被触发的事件的类型;
target: 事件目标;
DOM0:通过JavaScript指定事件处理程序的传统方式,就是将一个函数赋值给一事件处理程序属性,这种方式是所有现代浏览器都支持;
优势:简单具有跨浏览器的优势小缺陷只能绑定一次事件处理程序给元素绑定事件(都是小写)element.onclick = function () {};给元素解绑事件element.onclick = null;
DOM2级事件定义了两个方法,用于处理绑定和删除事件处理程序的操作;
绑定:XXX.addEventListener(事件名,函数,是否捕获);
true: 在捕获阶段调用事件处理程序;
false: 在冒泡阶段调用事件处理程序;
可以多次绑定不同的事件处理程序,并且会按照它们的绑定顺序执行;
解绑:removeEventLitener(事件名,函数,是否捕获);
IE中也有两种方法:
绑定:
XXX.attachEvent(事件名,函数);
IE只支持冒泡,并不支持捕获;
解除:
XXX.detachEvent(事件名,函数);