一般来说,可以直接封装成这种形式:

var addEvent = function(element,type,handler){
if(element.addEventListener){ //DOM2级
element.addEventListener(type,handler,false); //false为冒泡,true为捕获
}else if(element.attachEvent){ //IE
element.attachEvent("on"+type,function(){ //默认皆为冒泡
handler.call(element);
});
}else{
element["on"+type] = handler; //DOM0级
}
};

addEventListener的使用方式:主要是DOM2级

target.addEventListener(type, listener, useCapture);

target就是要注册事件的对象

type就是事件类型  比如“click"

listener就是监听的函数

useCapture就是是否使用捕获方式,false为冒泡,true为捕获

attachEvent使用方式:主要是IE中使用

target.attachEvent(type, listener);

type是事件类型,注意是这种形式:”onclick"

listener监听的函数

默认使用冒泡的方式

相应的,解除事件的方法:

removeEventListener(event,function,useCapture);

detachEvent(event,function);

那它们有什么不同呢?

举个例子:

document.getElementByIdx("btn").onclick = method1;
document.getElementByIdx("btn").onclick = method2;
document.getElementByIdx("btn").onclick = method3;
// 如果这样写,那么将会只有medhot3被执行 // 写成这样:
var btn1Obj = document.getElementByIdx("btn1"); //object.attachEvent(event,function);
btn1Obj.attachEvent("onclick",method1);
btn1Obj.attachEvent("onclick",method2);
btn1Obj.attachEvent("onclick",method3);
// 执行顺序为 method3->method2->method1 // 如果是Mozilla系列,并不支持该方法,需要用到addEventListener var btn1Obj = document.getElementByIdx("btn1");
//element.addEventListener(type,listener,useCapture);
btn1Obj.addEventListener("click",method1,false);
btn1Obj.addEventListener("click",method2,false);
btn1Obj.addEventListener("click",method3,false);
// 执行顺序为 method1->method2->method3

attachEvent和addEventListener区别的更多相关文章

  1. attachEvent和addEventListener区别总结

    1.attachEvent与addEventListener的区别 支持的浏览器不同.attachEvent在IE9以下的版本中受到支持.其它的都支持addEventListener. 参数不同.ad ...

  2. attachEvent与addEventListener的区别 真实例子

    转自:https://www.cnblogs.com/Rosefxd/p/4921330.html 近日遇到attachEvent与addEventListener两个事件,哟,果断研究一下~~ 先普 ...

  3. (转载)JS事件监听 JS:attachEvent和addEventListener使用方法

    (转载)http://www.chhua.com/web-note146 attachEvent和addEventListener使用方法 Js代码 <html> <head> ...

  4. JS事件监听 JS:attachEvent和addEventListener 使用方法

    attachEvent与addEventListener区别适应的浏览器版本不同,同时在使用的过程中要注意attachEvent方法          按钮onclickaddEventListene ...

  5. attachEvent和addEventListener

    attachEvent和addEventListener在前端开发过程中经常性的使用,他们都可以用来绑定脚本事件,取代在html中写obj.onclick=method. 相同点: 它们都是dom对象 ...

  6. js中添加事件 attachEvent 与 addEventListener

    给元素添加事件时,使用js进行实现时产生了疑惑,有关事件浏览器兼容的问题,在此记录如下. <!DOCTYPE html> <html> <head> <met ...

  7. attachEvent与addEventlistener兼容性

    关于原生事件绑定中attachEvent与addEventlistener中兼容性以及attachEvent函数中this指代window有关问题   请点击下面回答中的"采纳为答案&quo ...

  8. JavaScript中的attachEvent和addEventListener

    attachEvent和addEventListener在前端开发过程中经常性的使用,他们都可以用来绑定脚本事件,取代在html中写obj.onclick=method. 相同点: 它们都是dom对象 ...

  9. attachEvent 与 addEventListener 的监听

    说到 attachEvent 与 addEventListener 的事件必然会提到  浏览器的判断,因为attachEvent只适用于于IE 先来看看常用的浏览器的判断 //判断浏览器类型 if(n ...

随机推荐

  1. Requirements of an SAP system administrator

    Requirements of an SAP system administrator Have a "proper" attitude Protect and safeguard ...

  2. BarManager.ContextMenu

    <!--Search & List Area--> <dxb:BarManager Name="barManager1" dxlc:DockLayoutC ...

  3. 降低屏幕亮度,减缓眼疲劳 (linux/windows/firefox/android)

    Linux 在Linux上自动调整屏幕亮度来保护眼睛 - 51CTO.COM -- 介绍了Camera和RedShift这两款工具 How to automatically dim your scre ...

  4. 命令行模式下 MYSQL导入导出.sql文件的方法

    一.MYSQL的命令行模式的设置:桌面->我的电脑->属性->环境变量->新建->PATH=“:path\mysql\bin;”其中path为MYSQL的安装路径.二.简 ...

  5. C#排序比较

    与C#定义了相等性比较规范一样,C#也定义了排序比较规范,以确定一个对象与另一个对象的先后顺序.排序规范如下 IComparable接口(包括IComparable接口和IComparable< ...

  6. jQuery easyui 之 expend row

    http://www.jeasyui.com/tutorial/datagrid/datagrid21.php

  7. java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

    提起java内裤类(innerClass)很多人不太熟悉,实际上类似的概念在c++里面也有,那就是嵌套类(Nested Class),关于这俩者的区别,在下文中会有对比.内部类从表面上看,就是在类中定 ...

  8. Unix sed实用教程开篇

    已经看了一段时间的Linux Shell编程了,也能完成一些基本的使用,为了加深理解,恰好看到了The Unix School的一个sed&awk教程,不是简单的命令参数堆积,而是一个相当实用 ...

  9. c/c++: c++继承 内存分布 虚表 虚指针 (转)

    http://www.cnblogs.com/DylanWind/archive/2009/01/12/1373919.html 前部分原创,转载请注明出处,谢谢! class Base  {  pu ...

  10. 惊涛怪浪(double dam-break) -- position based fluids

    切入正题之前,先胡说八道几句.    据说爱因斯坦讲过:关于这个世界最难以理解的就是它是可以被理解的.人类在很长的时间里,都无法认知周围变幻莫测的世界,只能编造出无数的神祗来掌控世上万物的运行.到了近 ...