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的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
基于jQuery的图片剪切插件
Aug 03 Javascript
javascript常用方法汇总
Dec 02 Javascript
利用jquery实现实时更新歌词的方法
Jan 06 Javascript
jquery DataTable实现前后台动态分页
Jun 17 jQuery
javascript数组定义的几种方法
Oct 06 Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 Javascript
jQuery实现的点击按钮改变样式功能示例
Jul 21 jQuery
vue-router 实现导航守卫(路由卫士)的实例代码
Sep 02 Javascript
layer弹出子iframe层父子页面传值的实现方法
Nov 22 Javascript
小程序新版订阅消息模板消息
Dec 31 Javascript
如何手写简易的 Vue Router
Oct 10 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/01/28 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
对于Python中RawString的理解介绍
2016/07/07 Python
python解析基于xml格式的日志文件
2017/02/25 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
django连接mysql配置方法总结(推荐)
2018/08/18 Python
python3中property使用方法详解
2019/04/23 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
python argparser的具体使用
2019/11/10 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
Book Depository欧盟:一家领先的国际图书零售商
2019/05/21 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
师范生的个人求职信范文
2014/01/04 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技