码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-06 12:21:50      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:apt   接口   als   讲解   bind   doc   ext   事件处理   windows   

Mozilla中: 

addEventListener的使用方式: 

target.addEventListener(type, listener, useCapture); 

target: 文档节点、document、window 或 XMLHttpRequest。 
type: 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。 
listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 
useCapture :是否使用捕捉,一般用 false 。例如:document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); 

IE中: 

target.attachEvent(type, listener); 
target: 文档节点、document、window 或 XMLHttpRequest。 
type: 字符串,事件名称,含“on”,比如“onclick”、“onmouseover”、“onkeydown”等。 
listener :实现了 EventListener 接口或者是 JavaScript 中的函数。 例如:document.getElementById("txt").attachEvent("onclick",function(event){alert(event.keyCode);}); 

W3C 及 IE 同时支持移除指定的事件, 用途是移除设定的事件, 格式分别如下: 

W3C格式: 

removeEventListener(event,function,capture/bubble); 

Windows IE的格式如下: 

detachEvent(event,function); 


target.addEventListener(type, listener, useCapture); 
target 文档节点、document、window 或 XMLHttpRequest。 
type 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。 
listener 实现了 EventListener 接口或者是 JavaScript 中的函数。 
useCapture 是否使用捕捉,看了后面的事件流一节后就明白了,一般用 false 
事件触发时,会将一个 Event 对象传递给事件处理程序,比如: 
document.getElementById("testText").addEventListener("keydown", function (event) { alert(event.keyCode); }, false); 
适应的浏览器版本不同,同时在使用的过程中要注意 
attachEvent方法 按钮onclick IE中使用 
addEventListener方法 按钮click fox中使用 
两者使用的原理:可对执行的优先级不一样,下面实例讲解如下: 
attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列) 
addEventListener方法 用于 Mozilla系列 
举例: document.getElementById("btn").onclick = method1; 
document.getElementById("btn").onclick = method2; 
document.getElementById("btn").onclick = method3;如果这样写,那么将会只有medhot3被执行 
写成这样: 
var btn1Obj = document.getElementById("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.getElementById("btn1"); 
//element.addEventListener(type,listener,useCapture); 
btn1Obj.addEventListener("click",method1,false); 
btn1Obj.addEventListener("click",method2,false); 
btn1Obj.addEventListener("click",method3,false);执行顺序为method1->method2->method3 

<script type="text/javascript">
    //简单的封装绑定 兼容IE
    function bindEvent(obj,events,fn){
        if(obj.addEventListener){
            obj.addEventListener(events,fn,false);
        }else{
            obj.attachEvent(‘on‘+events,fn);
        }
    }
    //demo
    bindEvent(document,‘click‘,function(){
        alert("");
    });
</script>

 

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

标签:apt   接口   als   讲解   bind   doc   ext   事件处理   windows   

原文地址:http://www.cnblogs.com/lidongfeng/p/7125480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!