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 相关文章推荐
js模拟select下拉菜单控件的代码
May 08 Javascript
jquery 选取方法都有哪些
May 18 Javascript
JavaScript实现把数字转换成中文
Jun 29 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
Apr 07 Javascript
BootStrap按钮标签及基本样式
Nov 23 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
Aug 11 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
简单的三步vuex入门
May 20 Javascript
node跨域转发 express+http-proxy-middleware的使用
May 31 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 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
PHP5中虚函数的实现方法分享
2011/04/20 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
Yii清理缓存的方法
2016/01/06 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
javascript小数精度丢失的完美解决方法
2016/05/31 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
Redis使用watch完成秒杀抢购功能的代码
2018/05/07 Python
Pycharm更换python解释器的方法
2018/10/29 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
Python Pandas 箱线图的实现
2019/07/23 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
python 实现的车牌识别项目
2021/01/25 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
妇科医生自荐信
2013/11/05 职场文书
制药工程专业个人求职自荐信
2014/01/25 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
民主评议政风行风活动心得体会
2014/10/29 职场文书
爱国主义影片观后感
2015/06/18 职场文书
2016党校学习心得体会
2016/01/07 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书