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

  在通常情况下,如果要为单个事件注册多个事件处理程序,那么只有最后注册的那个事件处理程序才会起作用。这是因为在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 );
}
}

转载于:https://www.cnblogs.com/Pure-Land/archive/2011/07/08/2101185.html

你可能感兴趣的:(addEventListener:为单个事件注册多个事件事件处理程序)