addEventListener 与attachEvent

第一:简单的通用方法(IE && FF)

window.onload = function(){   var oDiv = document.getElementById("J_myDiv"); //找到对象   oDiv.onclick = function(){                                   //设置事件监听函数        alert("click");   }}

缺点:1.添加单一事件

2.不能删除事件

第二:IE中监听函数

var oDiv;

function fnClick(){    alert("click me");    oDiv.detachEvent("onclick",fnClick);//删除监听函数}

window.onload = function(){   oDiv = document.getElementById("J_myDiv");//找到对象   oDiv.attachEvent("onclick",fnClick);       //添加监听函数}

第三:标准DOM监听函数

var oDiv;

function fnClick1(){   alert("click1");   // oDiv.removeEventListener("click",fnClick2,false); //删除监听函数2}

function fnClick2(){   alert("click2");}

window.onload = function(){

     oDiv = document.getElementById("J_myDiv"); //找到对象     oDiv.addEventListener("click",fnClick1,false);   //添加监听函数1     oDiv.addEventListener("click",fnClick2,false);   //添加监听函数2

}

第四:从js实例来看事件监听 参看:http://imethan.com/?p=208

第五:从实例来看JS的事件监听学习笔记(事件监听绑定、ff/IE不同的处理机制兼容总结)参看:http://hi.baidu.com/dou917/blog/item/40219f37e6e3deee1b4cff67.html

第六:代码总结

<script language="javascript">//Javascript 事件演示window.onload = function(){    var hideBox = function(event){        document.getElementById(‘status_show‘).style.display = ‘none‘;        document.getElementById(‘status_hide‘).style.display = ‘block‘;    };    var showBox = function(event){        document.getElementById(‘status_show‘).style.display = ‘block‘;        document.getElementById(‘status_hide‘).style.display = ‘none‘;        stopEvent(event);    };    var stopEvent = function(event){        e = event || window.event;        if(e.stopPropagation){            e.stopPropagation();        }else {            e.cancelBubble = true;        }    };    if(document.addEventListener){        document.addEventListener(‘click‘, hideBox, false);        document.getElementById(‘status_hide‘).addEventListener(‘click‘, showBox, false);        document.getElementById(‘status_show‘).addEventListener(‘click‘, stopEvent, false);    }else {        //For IE        document.attachEvent(‘onclick‘, hideBox);        document.getElementById(‘status_hide‘).attachEvent(‘onclick‘, showBox);        document.getElementById(‘status_show‘).attachEvent(‘onclick‘, stopEvent, showBox);    }};</script>
  • onclick这种写法是DOM0级规范的写法,确实是所有的浏览器支持的,但是这种写法有一些弊端:
  1. 这种写法不能同时绑定多个事件
  2. 这种写法使代码耦合在了一起
  • addEventListener() 是DOM2标准中定义的方法,它可以控制是在事件捕获阶段或者是在冒泡阶段调用事件处理程序(由这个函数的第三个参数决定true/false),既然这个是DOM2标准中定义的,那么只有支持DOM2级事件处理程序的浏览器才支持这个方法(IE9,Firefox,Safari,Chrome和Opera都支持这个)。
  • attachEvent()方法并不是DOM标准定义的,而是IE自己实现的,而由于IE8及之前版本只支持事件冒泡,所以可想而知这个方法添加的事件处理程序都只能在冒泡阶段才会被调用,addEventListener()和attachEvent()还有一个区别就是第一个参数——事件类型,attachEvent()的事件类型都是前面带‘on‘的,比如点击事件 click ,addEventListener()可以传入 "click",而 attachEvent() 却要传入 ‘onclick‘;
时间: 2024-10-17 02:13:03

addEventListener 与attachEvent的相关文章

addEventListener或attachEvent都可以用bind代替

jquery addEventListener或attachEvent都可以用bind代替吗? meinxiaoo11级分类:汇编语言被浏览244次2013.11.12 木子的矫情范er 采纳率:41%11级2013.11.12 是的.不过对于绝大多数事件都有更简单的方法而不用bind,比如对click事件就有click函数能绑定: $("#div").click(function(){alert("clicked!");});

addEventListener和attachEvent二者绑定的执行函数中的this不相同【转载】

yuanwen http://www.jb51.net/article/32511.htm 写 addEventListener 和 attachEvent 区别的博文不少,不过大部分都把重点放置于前者是Firefox chrome,后者只是存在于IE系列中 写 addEventListener 和 attachEvent 区别的博文不少,不过大部分都把重点放置于前者是Firefox chrome,后者只是存在于IE系列中. 最近在写一个事件代理的时候,遇到一个BUG,发现除此外,二者绑定的执行

addEventListener和attachEvent以及element.onclick的区别

attachEvent是ie添加事件处理程序,接收两个参数,其中事件类型名称要加"on", 可以添加多个事件处理程序,按照添加顺序相反的顺序触发; addEventListener是给非ie添加事件处理程序,接收三个参数,第一个是事件名,不需要加“on”, 第二个是绑定的函数,第三个参数是一个布尔值,是事件的方式,意思是是否使用useCatch方式, 如果是false,就使用传统的冒泡方式,如果为true,就在捕获阶段调用事件处理程序. addEventListener可以添加多个事件

javascript中 addEventListener和attachEvent以及element.onclick的区别

attachEvent是ie添加事件处理程序,接收两个参数,其中事件类型名称要加"on", 可以添加多个事件处理程序,按照添加顺序相反的顺序触发; addEventListener是给非ie添加事件处理程序,接收三个参数,第一个是事件名,不需要加"on", 第二个是绑定的函数,第三个参数是一个布尔值,是事件的方式,意思是是否使用useCatch方式, 如果是false,就使用传统的冒泡方式,如果为true,就在捕获阶段调用事件处理程序. addEventListen

Javascript添加事件的addEventListener()及attachEvent()区别分析

Mozilla中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target: 文档节点.document.window 或 XMLHttpRequest. type: 字符串,事件名称,不含“on”,比如“click”.“mouseover”.“keydown”等. listener :实现了 EventListener 接口或者是 JavaScript 中的函数. useCapture

javascript绑定事件addEventListener与attachEvent

1.eleObj.addEventListener(eventName,handle,useCapture); eleObj:DOM元素: eventName:事件名称.注意,这里的事件名称没有“ on ”,如鼠标单击事件 click ,鼠标双击事件 doubleclick ,鼠标移入事件 mouseover,鼠标移出事件 mouseout 等. handle:事件句柄函数,即用来处理事件的函数: useCapture:Boolean类型,是否使用捕获,一般用false: 2.eleObj.at

addEventListener()与attachEvent()的区别

做前端开发工程师,最悲剧的某过于浏览器兼容问题了,上面有两种添加事件的方法,为了同一添加事件的方法,我们>不得不再重新写一个通用的添加事件函数,幸亏再有前人帮我们做了这件事 function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { elm.addEventListener(evType, fn, useCapture);//DOM2.0 return true; } else if (elm.atta

addEventListener和attachEvent的区别

addEventListener共有3个参数,如下所示:element.addEventListener(type,listener,useCapture); 参数 参数说明 element 要绑定事件的对象,及HTML节点. type 事件名称,注意去掉事件前边的“on”,比如“onclick”要写成“click”,“onmouseover”要写成“mouseover”. listener 要绑定的事件监听函数,注意只写函数名,不要带括号. userCapture 事件监听方式,只能是true

Javascript 的addEventListener()及attachEvent()区别分析

大家都知道事件的用法就是当某个事件(状况)被触发了之后就会去执行某个Function, 尤其是Javascript, 在当红AJAX的催化下, 了解Javascript的Event用法更加重要, 在这里就大概介绍一下avascript的Event用法. Mozilla中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target: 文档节点.document.window 或 XMLHtt