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 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
在javascript将NodeList作为Array数组处理的方法
Jul 09 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
Sep 10 Javascript
FireBug 调试JS入门教程 如何调试JS
Dec 23 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
Jun 27 Javascript
jquery append()方法与html()方法的区别及使用介绍
Aug 01 Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
用vue快速开发app的脚手架工具
Jun 11 Javascript
详解小程序不同页面之间通讯的解决方案
Nov 23 Javascript
Angular 多模块项目构建过程
Feb 13 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
WordPress自定义时间显示格式
2015/03/27 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
jquery easyui使用心得
2014/07/07 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
2015/11/29 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
移动端js图片查看器
2016/11/17 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
Python3 合并二叉树的实现
2019/09/30 Python
python中JWT用户认证的实现
2020/05/18 Python
为什么python比较流行
2020/06/19 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
社区党建工作方案
2014/06/10 职场文书
招标授权委托书样本
2014/09/23 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
趣味运动会开幕词
2015/01/28 职场文书
行政前台岗位职责
2015/04/16 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏