addEventListener:为单个事件注册多个事件事件处理程序

来源:互联网 发布:淘宝网红店铺有哪些 编辑:程序博客网 时间:2024/06/06 18:48


http://www.cnblogs.com/Pure-Land/archive/2011/07/08/2101185.html

在通常情况下,如果要为单个事件注册多个事件处理程序,那么只有最后注册的那个事件处理程序才会起作用。这是因为在DOM中,为HTML元素的一个事件指定事件处理程序时,这个事件处理程序会成为该元素的一个属性,如果为一个属性赋值,这个属性就会有这个值,可是如果再继续为这个属性赋值呢?很简单,这个属性就会有新值,原来的值就被覆盖了。所以,只有最后注册的那个事件处理程序才会起作用。为了解决这个问题,我们可以使用DOM Level 2模型的addEventListener()方法。

  addEventListener("事件名(不用加on)",事件处理程序,Bool(指示是完成事件浮升(false)还是事件捕获(true),通常情况下使用false))。这个事件是DOM Level 2模型的新方法,所以支持该模型的浏览器都可以使用这个方法,但是,在ie浏览器中,并不支持addEventListener方法,不过不用担心,我们可以使用attachEvent("事件名(加on)",事件处理程序),作用是一样的。

  使用了事件监听之后,我们并不能确定事件处理程序的调用顺序与其增加顺序一致,因为事件监听者并不会以某种特定的顺序调用事件处理程序,我们要确保事件处理程序不依赖于所调用的顺序。

  下面提供一个兼容各种浏览器的函数,用于创建事件监听对象:

复制代码
function addEventHandler(objectelement, eventname, eventhandler) {
if (document.attachEvent)//ie浏览器
{
objectelement.attachEvent(
"on" + eventname, eventhandler);
}
else if (document.addEventListener) //非ie浏览器
{
objectelement.addEventListener(eventname, eventhandler,
false);
}
}
0 0