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 相关文章推荐
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
Aug 21 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
Node.js+Express配置入门教程
May 19 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 Javascript
JS中使用FormData上传文件、图片的方法
Aug 07 Javascript
分分钟玩转Vue.js组件
Oct 25 Javascript
js replace()去除代码中空格的实例
Feb 14 Javascript
seajs实现强制刷新本地缓存的方法分析
Oct 16 Javascript
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 Javascript
vue 全局封装loading加载教程(全局监听)
Nov 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
php过滤危险html代码
2008/08/18 PHP
php获取域名的google收录示例
2014/03/24 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
js 居中漂浮广告
2010/03/21 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
初始Nodejs
2014/11/08 NodeJs
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python数据结构与算法之完全树与最小堆实例
2017/12/13 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
python3.7调试的实例方法
2020/07/21 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
纯CSS3实现手风琴风格菜单具体步骤
2013/05/06 HTML / CSS
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
工作人员思想汇报
2014/01/09 职场文书
党员政治学习材料
2014/05/14 职场文书
煤矿安全承诺书
2014/05/22 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
会议接待欢迎词范文
2015/01/26 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python