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 11 Javascript
一段效率很高的for循环语句使用方法
Aug 13 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
Mar 02 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
javascript中的变量作用域以及变量提升详细介绍
Oct 24 Javascript
用jquery的方法制作一个简单的导航栏
Jun 23 Javascript
AngularJS HTML编译器介绍
Dec 06 Javascript
jQuery插件ajaxfileupload.js实现上传文件
Oct 23 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
Sep 20 Javascript
layer设置maxWidth及maxHeight解决方案
Jul 26 Javascript
加速vue组件渲染之性能优化
Apr 09 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
javaScript实现游戏倒计时功能
2018/11/17 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
python将秒数转化为时间格式的实例
2018/09/16 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
24式加速你的Python(小结)
2019/06/13 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
澳大利亚领先的内衣店:Bendon Lingerie澳大利亚
2020/05/15 全球购物
西部世纪.net笔试题面试题
2014/04/03 面试题
缓刑人员的思想汇报
2014/01/11 职场文书
优秀会计求职信
2014/07/04 职场文书
商家认证委托书格式
2014/10/16 职场文书
导游词300字
2015/02/13 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
民事辩护词范文
2015/05/21 职场文书
行政复议决定书
2015/06/24 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
nginx之queue的具体使用
2022/06/28 Servers