IE 与DOM游览器的区别
在上文中的各种例子,addEventListener()产生的事件监听在chrome和firfox中有效,但在IE中是无效,这是因为IE实现了类似与DOM中类似的两个方法:attachEvent()和detachEvent(),使用方法值DOM的相类似,不同的是IE只支持事件冒泡,所以通过attachEvent()添加的事件处理程序都会被添加到冒泡阶段。具体代码如下:
它与DOM区别:
1. attachEvent()的第一个参数时“onclick”,而addEVentListener()则是“click”。
2. 作用域不同。attachEvent()中处理程序会在全局作用域中运行,this等于window,而DOM级方法中,处理程序会在所属元素的作用域中运行。
3. attachEvent()和addEventListener()都可以为同一元素添加多个事件处理程序,DOM是按照添加它们的顺序执行,而IE则是按相反顺序被执行。
跨游览器的事件处理程序
1. 自己写程序,原理很简单,先对游览器进行能力检测,再添加方法,具体:
这里为了方面起见,我使用了面向对象的逻辑,创建一个名叫EventUtil的对象,它有两个方法addHadler和removeHadler,分别用来注册和删除事件处理程序。
2. jquery类库
是javascript的一个类库,能极大地方便简化javascript的编程
这两篇文章主要是自己的学习笔记,大部分内容可以参见《javascript高级程序设计》中的事件一章。