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控制页面控件隐藏显示的两种方法介绍
Oct 09 Javascript
简洁Ajax函数处理(示例代码)
Nov 15 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
JS搜狐面试题分析
Dec 16 Javascript
codeMirror插件使用讲解
Jan 16 Javascript
JS动态生成年份和月份实例代码
Feb 04 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
JavaScript登录验证基础教程
Nov 01 Javascript
深入浅析vue组件间事件传递
Dec 29 Javascript
javascript中toFixed()四舍五入使用方法详解
Sep 28 Javascript
Vue 中如何正确引入第三方模块的方法步骤
May 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 static局部静态变量和全局静态变量总结
2014/03/02 PHP
PHPThumb图片处理实例
2014/05/03 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
Prototype Date对象 学习
2009/07/12 Javascript
window.open()详解及浏览器兼容性问题示例探讨
2014/05/29 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
vue里input根据value改变背景色的实例
2018/09/29 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
python socket网络编程步骤详解(socket套接字使用)
2013/12/06 Python
python传递参数方式小结
2015/04/17 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
django从后台返回html代码的实例
2020/03/11 Python
Python while true实现爬虫定时任务
2020/06/08 Python
特步官方商城:Xtep
2017/03/21 全球购物
高二历史教学反思
2014/01/25 职场文书
会计简历自我评价
2015/03/10 职场文书
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP
Vue+Flask实现图片传输功能
2022/04/01 Vue.js