博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 addEventListener 和 handleEvent 方法
阅读量:5079 次
发布时间:2019-06-12

本文共 1537 字,大约阅读时间需要 5 分钟。

 

使用 addEventListener 可以绑定事件,并传入回调函数。

Mozilla 0.9.1 和 Netscape 6.1 之后的版本不但支持传递函数引用,也都允许直接把拥有 handleEvent 方法的对象作为 addEventListener 方法的第二参数。

这在 DOM Level 2 的接口定义中也已经做了说明:

http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventListener

利用这个特性可以把任意对象注册为事件处理程序,只要它拥有 handleEvent 方法。

var o = {    handleEvent : function () {        alert('handleEvent executed');    }};element.addEventListener('click', o, false);

当定义对象封装的时候,可以直接将 this 指针传入:

var o = {    bind : function () {        element.addEventListener('click', this, false);    },    handleEvent : function () {        alert('handleEvent executed');    }};

IE9 是 IE 家族中第一个支持 addEventListener + handleEvent 的浏览器,IE9 之前的版本连 addEventListener 也没能支持。需要通过属性探测解决兼容问题:

function on(el, ev, fn, bubble) {    if(el.addEventListener) {        try {            el.addEventListener(ev, fn, bubble);        }        // 黑莓等系统不支持 handleEvent 方法        catch(e) {            if(typeof fn == 'object' && fn.handleEvent) {                el.addEventListener(ev, function(e){                    //以第一参数为事件对象                    fn.handleEvent.call(fn, e);                }, bubble);            } else {                throw e;            }        }    } else if(el.attachEvent) {        // 检测参数是否拥有 handleEvent 方法        if(typeof fn == 'object' && fn.handleEvent) {            el.attachEvent('on' + ev, function(){                fn.handleEvent.call(fn);            });        } else {            el.attachEvent('on' + ev, fn);        }    }}

完。

参考资料:

转载于:https://www.cnblogs.com/macliu/p/5661230.html

你可能感兴趣的文章
QML学习笔记之一
查看>>
Window 的引导过程
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
[ZJOI2007]棋盘制作 【最大同色矩形】
查看>>
IOS-图片操作集合
查看>>
模板统计LA 4670 Dominating Patterns
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>