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 相关文章推荐
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
Nov 24 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
浅析Ajax语法
Dec 05 Javascript
javascript变量提升和闭包理解
Mar 12 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 Javascript
微信小程序实现的一键拨号功能示例
Apr 24 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
May 08 Javascript
ElementUI radio组件选中小改造
Aug 12 Javascript
javascript实现获取中文汉字拼音首字母
May 19 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
May 25 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
Nov 12 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 类商品秒杀计时实现代码
2010/05/05 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
php mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
php中namespace use用法实例分析
2016/01/22 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
用js通过url传参把数据从一个页面传到另一个页面
2014/09/01 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python使用Tesseract库识别验证
2018/03/21 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
Python如何转换字符串大小写
2020/06/04 Python
Python定义一个函数的方法
2020/06/15 Python
html svg生成环形进度条的实现方法
2019/09/23 HTML / CSS
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
员工培训邀请函
2014/02/02 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
教师教育教学随笔
2015/08/15 职场文书