• js事件监听/鼠标滚轮/行为/冒泡/键盘的兼容性写法


    addEvent:function(el,type,fn,capture) {
        if (window.addEventListener) {    
            if (type === "mousewheel" && document.mozHidden !== undefined) {
                type = "DOMMouseScroll";
            }    
            el.addEventListener(type, fn, !!capture);
        } else if (window.attachEvent) {
            el.attachEvent("on" + type, fn);
        }
    },
    removeEvent:function(el,type,fn,capture) {
        if (window.removeEventListener) {    
            if (type === "mousewheel" && document.mozHidden !== undefined) {
                type = "DOMMouseScroll";
            }    
            el.removeEventListener(type, fn, !!capture);
        } else if (window.detachEvent) {
            el.detachEvent("on" + type, fn);
        }
    },
    //对鼠标滚轮、行为、冒泡以及键盘做的兼容性处理
    eventCompat:function(e) {
        e || (e = root.event);
        var type = e.type;
        if (type == 'DOMMouseScroll' || type == 'mousewheel') {
            e.delta = (e.wheelDelta) ? -e.wheelDelta / 120 : (e.detail || 0) / 3;
        }
        if (e.srcElement && !e.target) {
            e.target = e.srcElement;    
        }
        //阻止默认行为
        if (!e.preventDefault) {
            e.preventDefault = function() {
                e.returnValue = false;
            };
        }
        //阻止冒泡
        if (!e.stopPropagation && e.cancelBubble !== undefined) {
            e.stopPropagation = function() {
                e.cancelBubble = true;
            };
        }
        //键盘的兼容性处理
        if(e.which == null){
            e.which = e.charCode != null ? e.charCode : e.keyCode;
        }
        /* 
           ......其他一些兼容性处理 */
        return e;
    },
    bindAsEventListener:function(context, fun) {
        var self = this;
        return function(e) {
            return fun.call(context, self.eventCompat(e));
        }
    }
    
    
    //调用:
    var dom = document.getElementById('btn');
    var object = {
        clickCtrl:function(e){
            alert(e);    
        }
    };
    
    addEvent(dom, "click", function(){
        alert(dom.id);                                       
    });
    
    addEvent(dom, "mousedown", 
        bindAsEventListener(object, function(e){ 
            object.ClickCtrl(e);
    }));
     
  • 相关阅读:
    Win11系统恢复经典的右键菜单方法(CMD快速执行)
    XPS 15 9550 拆机升级固态硬盘
    python发出提示音
    if __name__ == '__main__'的理解
    固态硬盘选购
    清除电脑缓存为电脑瘦身
    matlab拷贝文件夹及其子文件和子文件内容
    建立空元胞数组
    CAD如何画角平分线
    注册公司流程
  • 原文地址:https://www.cnblogs.com/gulan/p/5884940.html
Copyright © 2020-2023  润新知