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 相关文章推荐
JavaScript 高效运行代码分析
Mar 18 Javascript
select标记美化--JS式插件、后期加载
Apr 01 Javascript
Jquery中使用setInterval和setTimeout的方法
Apr 08 Javascript
JavaScript获取flash对象与网上的有所不同
Apr 21 Javascript
JavaScript极简入门教程(二):对象和函数
Oct 25 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
Aug 16 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
May 11 Javascript
React Native 使用Fetch发送网络请求的示例代码
Dec 02 Javascript
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 Javascript
解决vue路由name同名,路由重复的问题
Aug 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发电子邮件
2006/10/09 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
php+redis实现多台服务器内网存储session并读取示例
2017/01/12 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
JQuery 学习笔记 选择器之六
2009/07/23 Javascript
jQuery示例收集
2010/11/05 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
JavaScript事件处理程序详解
2017/09/19 Javascript
js动态引入的四种方法
2018/05/05 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
python中子类调用父类函数的方法示例
2017/08/18 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
Tensorflow累加的实现案例
2020/02/05 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
企业项目策划书
2014/01/11 职场文书
平面设计求职信
2014/03/10 职场文书
竞聘书格式及范文
2014/03/31 职场文书
员工评语范文
2014/12/31 职场文书
农业项目投资意向书
2015/05/09 职场文书