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 Array对象的扩展函数代码
Apr 24 Javascript
js带前后翻页的图片切换效果代码分享
Sep 08 Javascript
BootStrap3学习笔记(一)之网格系统
May 20 Javascript
详解Vue整合axios的实例代码
Jun 21 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
Aug 09 Javascript
React性能优化系列之减少props改变的实现方法
Jan 17 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
Feb 22 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
May 21 Javascript
vue.js实现h5机器人聊天(测试版)
Jul 16 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
Nov 06 Javascript
React服务端渲染原理解析与实践
Mar 04 Javascript
浅谈node.js中间件有哪些类型
Apr 29 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的面试题集
2006/11/19 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
PHP传参之传值与传址的区别
2015/04/24 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
RequireJS用法简单示例
2018/08/20 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
python实现斐波那契递归函数的方法
2014/09/08 Python
python逆向入门教程
2018/01/15 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
python属于解释型语言么
2020/06/15 Python
5款实用的python 工具推荐
2020/10/13 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
linux面试题参考答案(5)
2016/11/05 面试题
公司市场部岗位职责
2015/04/15 职场文书
反腐倡廉影片观后感
2015/06/08 职场文书
我爱我班主题班会
2015/08/13 职场文书
nginx配置限速限流基于内置模块
2022/05/02 Servers