attachEvent(a)、detachEvent(b)和addEventListener(c)、removeEventListener(d)的区别和使用注意
1、使用d移除c时(只能通过d来移除),c的第二个参数不能是匿名函数
如:btn.addEventListener('click',function(){},false),是不能被移除的。
btn.addEventListener('click',handler,false)可以通过btn.removeEventListener('click',handler,false)移除,参数3如果是false可以省略,true要保存一致
a也要b来移除,参数也要一样
DOM0级,直接用btn.onclick = null; 来移除
2、c和d中,参数3代表捕获阶段,true事件捕获(captrue),false事件冒泡(bubbling)。 a、b不用,因为都是冒泡,所以只要两个参数
3、a、b参数1 onclick,c、d参数1 click
4、a、b中的函数运行环境是window,this指向window(event.srcElement指向当前对象)。c、d包括DOM0都是所属元素的作用域中。
5、a、b中添加多个事件,执行顺序是后添加先执行,c、d是先添加先执行,DOM0不支持多事件。
6、阻止默认事件a设置returnValue属性,(window.event.returnValue=false)。c用event.preventDefault()方法
a、b在IE11中也不被支持,另外也可以直接在HTML中添加事件,JS和HTML耦合太强,基本被舍弃了