addEventListener:为单个事件注册多个事件事件处理程序
2016-04-10 17:40
591 查看
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)",事件处理程序),作用是一样的。
使用了事件监听之后,我们并不能确定事件处理程序的调用顺序与其增加顺序一致,因为事件监听者并不会以某种特定的顺序调用事件处理程序,我们要确保事件处理程序不依赖于所调用的顺序。
下面提供一个兼容各种浏览器的函数,用于创建事件监听对象:
在通常情况下,如果要为单个事件注册多个事件处理程序,那么只有最后注册的那个事件处理程序才会起作用。这是因为在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); } }
相关文章推荐
- Maven之——仓库(下)
- 【整理】LINUX下使用CMAKE安装MYSQL
- hdu1074 状态压缩dp
- JNI 开发笔记 - Android JNI Tips
- (转)JDBC应用中的PreparedStatement 与Statement
- SpringMVC教程(一)框架搭建
- 解决springMVC POST 中文乱码
- Pomelo+cocos2dx3.9客户端完美运行启动
- 计算机中的事务、回滚
- 严重: Dispatcher initialization failed java.lang.RuntimeException: java.lang.reflect.InvocationTargetE
- JNI 开发笔记 - Native代码开发以及核心API介绍
- TCP协议的学习(三)TCP协议三次握手及攻击
- 第六周学习进度
- 我的第二个FluentNHibernate例子with Knockout
- Unity3d--timeScale的使用方法
- 83 stl(十一)
- Android 实现 session 保持
- expandablelist
- dx工具
- [疯狂Java]SQL:子查询