事件兼容性封装

function event(){

if(window.addEventListener) {
                        this.addEventListener("click", handler);
                    } else if(window.attachEvent) {
                        this.attachEvent("onclick", handler);
                    } else {
                        // this.onclick = handler;
                        // 思路:
                        // 1 先判断有没有绑定过事件
                        // 2 如果没有绑定直接赋值
                        // 3 如果绑定过了
                        //         3.1 先将绑定的事件保存起来
                        //         3.2 调用事件:先调用已经绑定的事件,再调用当前绑定的事件

                        var oldFn = this.onclick;
                        // 事件没有绑定过,那么就是null,否则就是 function
                        if(typeof oldFn !== "function") {
                            this.onclick = handler;
                        } else {
                            // 已经绑定过事件了
                            this.onclick = function() {
                                oldFn();
                                handler();
                            };
                        }

}
时间: 2024-08-08 17:44:13

事件兼容性封装的相关文章

javascript移动设备Web开发中对touch事件的封装实例

在触屏设备上,一些比较基础的手势都需要通过对 touch 事件进行二次封装才能实现.zepto 是移动端上使用率比较高的一个类库,但是其 touch 模块模拟出来的一些事件存在一些兼容性问题,如 tap 事件在某些安卓设备上存在事件穿透的 bug,其他类型的事件也或多或少的存在一些兼容性问题. 于是乎,干脆自己动手对这些常用的手势事件进行了封装,由于没有太多真实的设备来进行测试,可能存在一些兼容性问题,下面的代码也只是在 iOS 7.Andorid 4 上的一些比较常见的浏览器中测试通过. ta

MIT 2012分布式课程基础源码解析-事件管理封装

这部分的内容主要包括Epoll/select的封装,在封装好相应函数后,再使用一个类来管理相应事件,实现的文件为pollmgr.{h, cc}. 事件函数封装 可看到pollmgr.h文件下定一个了一个虚基类aio_mgr 1 class aio_mgr { 2 public: 3 virtual void watch_fd(int fd, poll_flag flag) = 0; 4 virtual bool unwatch_fd(int fd, poll_flag flag) = 0; 5

javascript将DOM事件处理程序封装为event.js 出现的低级错误记录

将 DOM 0级事件处理程序和DOM2级事件处理程序 IE事件处理程序封装为eventUtil对象,达到跨浏览器的效果.代码如下: var eventUtil = { // 添加事件句柄 addEventHandler:function (element,type,handler) { if (element.addEventListener) { element.addEventListener(type, handler,false); }else if(element.attachEven

JS常用事件兼容性处理方法

event.js文件 //跨浏览器事件处理程序[根据能力检测调用] var EventObject = { //添加事件AddEvent:function(obj , type , eventFn){if(obj.addEventListener){//常用obj.addEventListener(type , eventFn , false);}else if(obj.attachEvent){//IE8及以下obj.attachEvent('on'+type , eventFn);}else

跨浏览器事件对象封装

封装一个能够隔离浏览器差异的JavaScript库EventUtil,主要是使用能力检测. var EventUtil={ addHandler:function(element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false); }else if(element.attachEvent){ element.attachEvent('on'+type,handler)

模拟jQuery--获取事件的封装

从使用jQuery到写原声js,逐步到自己封装框架.敲出我的模拟jQuery路程~~~satar 封装我们的绑定事件以及解除绑定事件————兼容ie低版本 $ = { //绑定事件 on: function (dom, type, fn) { var dv = document.getElementById(dom); if (document.addEventListener) { //标准组织 dv.addEventListener(type, fn, false); } else { //

【事件】封装touch触摸事件 --- DOM2级、单点触控

//封装touch触摸事件 --- DOM2级.单点触控 if (!Object.prototype.addTouchEvents) { Object.defineProperty(Object.prototype, 'addTouchEvents', { value: function(Obj) { var noop = function() {}; var defaults = { start: noop, //开始 move: noop, //移动 end: noop, //结束 left

Unity中消息事件的封装与运用

大家在开发Unity的时候,为了方便开发一般都会采用消息事件,消息事件主要是做啥的?我们如何去封装,如何去运用消息事件处理事情.接下来就给大家介绍一下: 消息事件顾名思义,是通过消息触发的事件.比如大家去完成某个任务,完成后才会触发另一个事件的发生,这种情况我们就会使用消息事件等等吧. 消息事件的使用主要是通过添加消息监听,然后分发消息处理事情. 那我们如何去封装我们的消息系统,在这里我把代码给大家分享一下: 首先我们定义一个消息枚举类型脚本CEventType.cs内容如下: 接下来封装消息事

移动端tap事件的封装

/*封装tap*/ cc.tap = function(dom,callback){ /* * 要求 没有触发 touchmove 事件 * 并且响应速度要比click快 */ if(dom && typeof dom == 'object'){ var isMove = false; var startTime = 0; dom.addEventListener('touchstart',function(e){ //console.log('touchstart'); //consol