首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Javascript 的addEventListener()及attachEvent()区别分析

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

作者头像
smy
发布2018-04-03 13:53:44
1.3K0
发布2018-04-03 13:53:44
举报
文章被收录于专栏:smysmysmy

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 

实例:(要注意的是div必须放到js前面才行) 

if  (typeof window.addEventListener != “undefined”) {
 window.addEventListener(”load”,rollover,false);
 } else {
 window.attachEvent(”onload”,rollover)
 }

上述的 typeof window.addEventListener != “undefined” 程序代码可以判断使用者的浏览器是否支持AddEventListener这个事件模型, 如果不支持就使用attachEvent.

参考:http://www.jb51.net/article/18220.htm

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-12-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档