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 面向对象的5钟写法
Jul 31 Javascript
初识javascript 文档碎片
Jul 13 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
Jquery使用val方法读写value值
May 18 Javascript
javascript事件冒泡和事件捕获详解
May 26 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
Sep 14 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
Oct 15 Javascript
Ajax实现三级联动效果
Oct 05 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
全国中波电台频率表
2020/03/11 无线电
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
JavaScript实现计算多边形质心的方法示例
2018/01/31 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
2020/05/06 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Python3.4解释器用法简单示例
2019/03/22 Python
一行python实现树形结构的方法
2019/08/09 Python
python实现画循环圆
2019/11/23 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
几个SQL的面试题
2014/03/08 面试题
社团文化节策划书
2014/02/01 职场文书
企业宣传工作方案
2014/06/02 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书