跨浏览器事件处理

138 阅读1分钟
let eventUtility = {
    addEvent: function(ele, type, fn) {
        if (typeof addEventListener !== "undefined") {
            ele.addEventListener(type, fn, false);
        } else if (typeof attachEvent !== "undefined") { //比如在IE8下
            ele.attachEvent("on" + type, fn);
        } else {
            //获取属性通过obj.属性名称,等同于obj[属性名称]
            //执行事件通过obj.事件名称,等同于obj[事件名称]
            ele["on" + type] = fn;
        }
    },
    removeEvent: function(ele, type, fn) {
        if (typeof removeEventListener !== "undefined") {
            ele.removeEventListener(type, fn, false);
        } else if (typeof detachEvent !== "undefined") {
            ele.detachEvent("on" + type, fn);
        } else {
            ele["on" + type] = null;
        }
    },
    getTarget: function(event) {
        if (typeof event.target !== "undefined") {
            return event.target;
        } else {
            return event.srcElement;
        }
    },
    preventDefault: function(event) {
        if (typeof event.preventDefault !== "undefined") {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    },
    getCharCode: function(event) {
        if (typeof event.charCode === "number") {
            return event.charCode;
        } else {
            return event.keyCode;
        }
    }
};