IEブラウザとDOMブラウザに対応するイベントオブジェクト


DOMとIE中のイベントオブジェクトは異なるが、彼らの類似性に基づいてブラウザを跨ぐプログラムを出すことができる.IEにおいて、イベントオブジェクトのすべての情報と方法DOM方法にはあるが、実装方法が異なるだけで、この対応関係は、2つのイベントモデル間のマッピングを実現するのに非常に容易である.EventUtilオブジェクトを作成します.
var EventUtil = {
    addHandler: function(element, type, handler){ //         
        if(element.addEventListener){ //   DOM2   
            element.addEventListener(type, handler, false); // false         
        } else if(element.attachEvent) { // IE,   "on"     IE8       
            element.attachEvent("on" + type, handler);
        } else { // DOM0   ,      
            element["on" + type] = handler;
        }
    },
    removeHandler: function(element, type, handler){ //         
        if(element.removeEventListener){ //   DOM2   
            element.removeEventListener(type, handler, false); // false         
        } else if(element.detachEvent) { // IE,   "on"     IE8       
            element.detachEvent("on" + type, handler);
        } else { // DOM0   ,      
            element["on" + type] = null;
        }
    },
    getEvent: function(event) { //       
        return event ? event : window.event; // IE  event undefined,    window.event     
    },
    getTarget: function(event) { //        
        return event.target || event.srcElement; // IE srcElement         
    },
    preventDefault: function(event) { //       ,  a      
        if(event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    },
    //   IE9         ,          ,          
    stopPropagation: function(event) { 
        if(event.stopPropagation) {
            event.stopPropagation();
        } else {
            event.cancelBubble = true;
        }
    }
}