公共事件处理函数js库

var EventUtil = {
            /*
            *添加事件处理 参数:元素对象 事件类型 处理函数
           */
            addHandle: function (element, type, handle) {
                //dom2级的事件添加
                if (element.addEventListener) {
                    element.addEventListener(type, handle, false);
                } else {
                    //IE 的事件添加
                    if (element.attachEvent) {
                        element.attachEvent('on' + type, handle);
                    } else {
                        //给元素特性赋值
                        element['on' + type] = handle;
                    }
                }

            },
            /*
            *移除事件处理 参数:元素对象 事件类型 处理函数
           */
            removeHandle: function (element, type, handle) {
                //dom2级的事件移除
                if (element.removeEventListener) {
                    element.removeEventListener(type, handle, false);
                } else {
                    //IE的事件移除
                    if (element.detachEvent) {
                        element.detachEvent('on' + type, handle);
                    } else {
                        //给元素特性赋值为空对象以移除事件
                        element['on' + type] = null;
                    }
                }
            },
            //获得event对象 IE中以参数event对象传入 Dom中通过window.event来访问
            getEvent: function (event) {
                return event ? event : window.event;
            },
            //获得事件的目标 dom中通过event.target获得 IE中通过event.srcElement
            getTarget: function (event) {
                return event.target || event.srcElement;
            },
            //取消事件的默认行为
            preventDefault: function (event) {
                if (event.preventDefault) {
                    //Dom 方法
                    event.preventDefault();
                } else {
                    //设置IE event.returnValue = false
                    event.returnValue = false;
                }
            },
            //停止事件冒泡
            stopPropagation: function (event) {
                //Dom 方法
                if (event.stopPropagation) {
                    event.stopPropagation();
                } else {
                    event.cancelBubble = true;;
                }
            },
            //获得相关目标对象
            getRelatedTarget: function (event) {
                //Dom 方法 relatedTarget只对mouseover和mouseout事件才包含值 否则 这个值为null
                if (event.relatedTarget) {
                    return event.relatedTarget;
                } else {
                    //IE
                    if (event.toElement) {
                        return event.toElement;
                    } else {
                        if (event.fromElement) {
                            return event.fromElement;
                        } else {
                            return null;
                        }
                    }
                }
            },
            //获得鼠标按键 0表示左键 1表示中间轮 2表示右键
            getButton: function (event) {
                //是否支持Dom鼠标事件
                if (document.implementation.hasFeature('MouseEvents', '2.0')) {
                    return event.button;
                } else {
                    switch (event.button) {
                        case 0:
                        case 1:
                        case 3:
                        case 5:
                        case 7:
                            return 0;
                        case 2:
                        case 6:
                            return 2;
                        case 4: return 1;
                    }
                }
            },
            //获得字符编码
            getCharCode: function (event) {
                if (typeof event.charCode == 'number') {
                    return event.charCode;
                } else {
                    return event.keyCode;
                }
            }
        };

 

posted @ 2015-05-10 20:52  静逸  阅读(882)  评论(0编辑  收藏  举报