addEventListener 的用法示例介绍


Posted in Javascript onMay 07, 2014

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

一般情况下,如果给一个dom对象绑定同一个事件,只有最后一个会生效,比如:

document.getElementById("btn").onclick = method1; 
document.getElementById("btn").onclick = method2; 
document.getElementById("btn").onclick = method3;

那么将只有method3生效。

如果是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

如果是ie系列,用attachEvent可以让多个事件按顺序都实现,比如:

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的使用方式

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 同时支持移除指定的事件, 用途是移除设定的事件, 格式分别如下:

removeEventListener(event,function,capture/bubble);

Windows IE的格式如下:

detachEvent(event,function);

DOM2 的进化:

DOM 0 Event DOM 2 Event
onblur() blur
onfocus() focus
onchange() change
onmouseover() mouseover
onmouseout() mouseout
onmousemove() mousemove
onmousedown() mousedown
onmouseup() mouseup
onclick() click
ondblclick() dblclick
onkeydown() keydown
onkeyup() keyup
onkeypress() keypress
onsubmit() submit
onload() load
onunload() unload

新的DOM2 用法可以addEventListener()这个函数来观察到:

addEventListener(event,function,capture/bubble);

参数event如上表所示, function是要执行的函数, capture与bubble分别是W3C制定得两种时间模式,简单来说capture就是从document的开始读到最后一行, 再执行事件, 而bubble则是先寻找指定的位置再执行事件.
capture/bubble的参数是布尔值, True表示用capture, False则是bubble.Windows Internet Explorer也有制定一种EventHandler, 是 attachEvent(), 格式如下:
window.attachEvent(”submit”,myFunction());

比较特别的是attachEvent不需要指定capture/bubble的参数, 因为在windows IE环境下都是使用Bubble的模式.

如何判断是否支持哪种监听呢?如:

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

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

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

W3C格式:

removeEventListener(event,function,capture/bubble);

Windows IE的格式如下:

detachEvent(event,function);

Javascript 相关文章推荐
用htc组件制作windows选项卡
Jan 13 Javascript
jQuery学习笔记之DOM对象和jQuery对象
Dec 22 Javascript
JavaScript中的undefined学习总结
Nov 30 Javascript
JavaScript中的prototype和constructor简明总结
Apr 05 Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
Apr 21 Javascript
javascript日期格式化方法汇总
Oct 04 Javascript
vue组件间通信解析
Mar 01 Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
May 07 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
Aug 14 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 #Javascript
关闭时刷新父窗口两种方法
May 07 #Javascript
js获取下拉列表的值和元素个数示例
May 07 #Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
May 07 #Javascript
table行随鼠标移动变色示例
May 07 #Javascript
Jquery方式获取iframe页面中的 Dom元素
May 07 #Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 #Javascript
You might like
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
PHP积分兑换接口实例
2015/02/09 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
2016/03/18 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
JavaScript 基本概念
2015/01/20 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
Python学习小技巧之列表项的拼接
2017/05/20 Python
Python实现图片转字符画的示例
2017/08/22 Python
python机器学习之决策树分类详解
2017/12/20 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
Python实现井字棋小游戏
2020/03/09 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
培训讲师邀请函
2014/01/10 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
怎么写好自荐书
2014/03/02 职场文书
中式婚礼主持词
2014/03/13 职场文书
合作经营协议书范本
2014/04/17 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书