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 浏览器事件介绍
Mar 30 Javascript
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
Aug 12 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
Jan 08 Javascript
JavaScript调试之console.log调试的一个小技巧分享
Aug 07 Javascript
详解使用webpack构建多页面应用
Dec 21 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
Mar 10 Javascript
vue左侧菜单,树形图递归实现代码
Aug 24 Javascript
vue集成chart.js的实现方法
Aug 20 Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
Nov 14 Javascript
ant design vue datepicker日期选择器中文化操作
Oct 28 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截取字符串函数分享(截取中文字符串)
2014/03/13 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
js replace正则表达式应用案例讲解
2013/01/17 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
vue小白入门教程
2018/04/02 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
PyMongo安装使用笔记
2015/04/27 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
python实现tail -f 功能
2020/01/17 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
自行车广告词大全
2014/03/21 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
人工作失职检讨书
2015/05/05 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
生日寿星公答谢词
2015/09/29 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
php+laravel 扫码二维码签到功能
2021/05/15 PHP
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS